【问题标题】:How to redirect to route logout when session timeout in laravel 5.4laravel 5.4中会话超时时如何重定向到路由注销
【发布时间】:2017-12-27 05:03:04
【问题描述】:

sessionlaravel 5.4 中有timeout 时,我想redirectlogout route

我在app\exception\handler.php试试这个

    if ($e instanceof TokenMismatchException) {                       
         return redirect()->route('logout');
    }

但它仍然无法正常工作。我能做什么

【问题讨论】:

  • 如果某人的会话已过期,我不确定您是否可以将其注销
  • 我想重定向到注销,因为当我登录时,我会一直保持到会话超时。当我刷新页面将显示错误“尝试获取非对象的属性”
  • @haakym 有什么帮助吗??
  • 看看here
  • @Maraboc 好的,我在 Route if (Auth::guest()) { return back()->withInput(); } else { 返回重定向('/viewproduct');它的工作,但我需要把它写在所有的路线。有什么想法吗??

标签: php laravel session laravel-5


【解决方案1】:

当会话超时时,您基本上不再登录。

您是否保护了您需要用户使用auth 中间件登录的路由?我认为你错过了这一步。

如果用户未登录(或超时),受auth 中间件保护的路由会自动重定向到/login(可以更改路由)。

查看这部分文档:https://laravel.com/docs/5.4/authentication#protecting-routes

【讨论】:

  • 是的,我使用 auth 完成了路由保护,但我需要在所有路由中编写所有相同的代码。 if (Auth::guest()) { return back()->withInput(); } else { 返回重定向('/viewproduct'); }
  • 好的,然后跟进。您将if ($e instanceof TokenMismatchException) 放在handler.php 的什么位置?它应该在return parent::render 行上方的render() 方法中。还要确保使用 use Illuminate\Session\TokenMismatchException; 导入正确的 TokenMismatchException。
  • 很难说没有看到更大的图景,但我会仔细检查您是否正确使用了 auth 中间件,因为如果没有有效的用户存储在控制器操作中,您永远不应该进入控制器操作会议。
  • 如果我在路由中这样写 Route::group(['middleware' => ['guest']], function () { return redirect()->route('login'); });验证访客时它总是会返回登录??
  • 不,请查看 Laravel 文档,了解如何使用 authguest 中间件:laravel.com/docs/5.4/authentication#protecting-routes。如果您希望用户通过身份验证以访问路由,则此要点是使用 auth 中间件,如果您希望他们未经身份验证,请使用 guest
猜你喜欢
  • 2016-05-27
  • 2018-01-23
  • 2020-03-11
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
相关资源
最近更新 更多