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“页面由于不活动而过期”的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常

我想自学laraver,请诸位前辈给一些建议,谢谢

larave学习笔记1-安装配置

Larave中CSRF攻击

laraver框架学习------工厂模型填充测试数据

laravel框架(blade模板引擎)