Laravel“页面由于不活动而过期”
Posted
技术标签:
【中文标题】Laravel“页面由于不活动而过期”【英文标题】:Laravel "The page has expired due to inactivity" 【发布时间】:2018-08-31 13:12:22 【问题描述】:错误
我的情景
首先我知道这个错误消息是CSRF / session 错误消息,这很好;事实上,它的行为符合预期。由于特定于我的应用程序的原因,我已经这样做了,以便访问一个帐户,我发送一个发布请求并根据该响应数据构建页面。
问题是,当该页面上的会话超时时,我的应用程序什么也不做,而是抛出此错误消息。然后我必须输入一个 URL 才能重定向到不适合客户的登录页面。
我的问题
如何控制我的应用程序的行为,以便我可以修改发生此 CSRF 错误时发生的情况,例如,如果我想制作自定义页面或使用控制器执行重定向等?
不同的是我知道这个错误是什么。我想要一种在出现此错误时重定向的方法,我不是试图阻止错误显示,而是试图从中重定向。就我而言,这不是错误;这是我所期望的行为!
【问题讨论】:
"The page has expired due to inactivity" - Laravel 5.5的可能重复 @RahmanQaiser 如果您阅读了这个问题,您会发现它根本不是重复的...... @KenziieeFlavius 不确定您使用的是哪个版本的 Laravel。在 5.4 中,如果我没记错的话,有一个 handler.php 文件['/app/Exceptions/Handler.php']。你可以编辑它。 @harry 谢谢我看看 【参考方案1】:在render
函数中的app/Exceptions/Handler.php
中添加以下行:
if ($e instanceof \Illuminate\Session\TokenMismatchException)
return redirect('/login')->with('message', 'Sorry, your session seems to have expired. Please login again.');
行前:
return parent::render($request, $e);
这应该重定向到令牌不匹配的登录。
进一步解释的链接:https://gist.github.com/jrmadsen67/bd0f9ad0ef1ed6bb594e
【讨论】:
在你发帖的时候真的把它写出来了谢谢! :) @KenziieeFlavius以上是关于Laravel“页面由于不活动而过期”的主要内容,如果未能解决你的问题,请参考以下文章