在 Laravel 5.8 中会话过期时重定向到其他路由

Posted

技术标签:

【中文标题】在 Laravel 5.8 中会话过期时重定向到其他路由【英文标题】:Redirect to other route when session has expired in Laravel 5.8 【发布时间】:2021-05-09 19:17:35 【问题描述】:

我正在尝试返回另一条路线,因为在我的情况下登录它是一个模式页面,并且当会话过期时,返回此路线但它不存在。我不知道该怎么做。

我可以在网上看到这个:if(Auth::check()) return route('/'),但我不知道我把这段代码放在哪里。

我也可以看到这个:在 'App\Exception\Handler' 中放这个:

if ($exception instanceof AuthenticationException) 
            return redirect('/');
        

我该怎么做?

谢谢你帮助我

【问题讨论】:

laravel.com/docs/5.8/middleware 这能回答你的问题吗? Laravel 5 check whether a user is logged in 感谢所有回复。但我不太了解所有回复。我在哪里可以做到这一点...我想使用中间件,但我不知道该怎么做 【参考方案1】:

Laravel 可能已经有了你需要的东西。看看App\Http\Middleware\Authenticate 类。这是一个中间件,如果会话已过期,它将将用户重定向到“登录”命名路由(默认情况下)。 默认情况下,您放入 routes/web.php 的所有路由都不受此中间件保护,但您可以更改此设置。

方法一:在控制器的构造函数中添加auth中间件:

public function __construct()

    $this->middleware('auth');

方法 2:为您的一条路由添加 auth 中间件:

Route::get('profile', function () 
    // Only authenticated users may enter...
)->middleware('auth');

方法3:将所有受保护的路由添加到组中:

Route::group(['middleware' => ['auth']], function () 
    // All your protected routes go here
);

然后您可以轻松更改将用于重定向会话过期(未经过身份验证)的用户的 URL。只需编辑 App\Http\Middleware\Authenticate::redirectTo() 方法并返回您的 URL,例如:

protected function redirectTo($request)

    if (! $request->expectsJson()) 
        return route('yourLoginRouteName');
    

【讨论】:

【参考方案2】:

您可以创建一个路由来检查会话,它会每分钟检查会话是否存在。 你可以这样使用:

刀刃部分:

@if (Auth::user())
  <script>
    $(function() 
      setInterval(function checkSession() 
        $.get('/is-logged-in', function(data) 
          // if session was expired
          if (!data.isLoggedIn) 
            // redirect to login page    
            // or, may be better, just reload page
            location.reload();
          
        );
      , 60000); // You can change it
    );
  </script>
@endif

路线:

Route::get('is-logged-in', 'Auth\AuthController@checkSession');

控制器:

public function checkSession()

    return Response::json(['isLoggedIn' => Auth::check()]);

【讨论】:

感谢您的回复,但是,我需要更改默认值 laravel session expired

以上是关于在 Laravel 5.8 中会话过期时重定向到其他路由的主要内容,如果未能解决你的问题,请参考以下文章

作者会话的 Laravel 更改重定向部分过期

同时认证带来的Laravel 5.8会话混乱

重定向进入空白页面而不重定向到路由 Laravel 5.8

Laravel 在区域设置更改时重定向到路由

当用户会话处于活动状态时使用 Laravel 5.7 中的 Auth 重定向到页面的方法

Laravel Spark - 登录时重定向