拉维尔 "The page has expired due to inactivity"

标签 laravel session csrf

错误

Enter image description here

我的场景

首先我知道这个错误消息是 CSRF/ session 错误消息,没关系;事实上它的行为符合预期。由于我的应用程序的特定原因,我这样做是为了访问帐户,我发送一个发布请求并根据该响应数据构建页面。

问题是,当该页面上的 session 超时时,我的应用程序不执行任何操作,而是抛出此错误消息。然后,我必须实际输入 URL 才能重定向到登录页面,这对客户来说并不理想。

我的问题

如何控制应用程序的行为,以便可以修改发生此 CSRF 错误时发生的情况,例如,如果我想创建自定义页面或使用 Controller 执行重定向等?

不同的是我知道这个错误是什么。我想要一种在出现此错误时进行重定向的方法,我并不是试图阻止错误显示,而是尝试从中进行重定向。就我而言,这不是一个错误;这是我所期望的行为!

最佳答案

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);

这应该重定向到 token 不匹配的登录。

进一步说明的链接:https://gist.github.com/jrmadsen67/bd0f9ad0ef1ed6bb594e

关于拉维尔 "The page has expired due to inactivity",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49422889/

相关文章:

android - 如何避免 Android 中的 session 超时

python - 将 CSRF token 添加到硬编码的 Django 表单中

csrf - Laravel 5 : POST without CSRF checking

php - Laravel 身份验证在 Laravel 5.3 中无法正常工作

java - 代码中的计时器

php - 如何使用 Laravel Vapor 发布 list 文件

session_regenerate_id() - 已在单元测试 Yii Controller 中发送的 header

ruby-on-rails - 从浏览器外部到 Rails 服务器的请求的 CSRF token 问题

node.js - 在 Heroku 上使用 Laravel + Redis + Node.js for websocket app ...担心连接限制

php - 来自 Controller 的 Laravel 调用路由