之前见过很多次,还没有解决方案:Laravel Page Expired 419 on mobile

问题描述 投票:0回答:3
我认为,如果您给我一段与手机上 Laravel 页面过期 419 相关的错误描述,我可以在网上其他地方告诉您该问题的作者姓名和准确发布日期。是的,这也是这个问题的目的。我该如何解决?

    我发现用户在使用手机时,我的应用程序的登录页面遇到了摩擦。通常它会给出错误 419,页面已过期。不用说 csrf 令牌就在那里。它在桌面上也像一个魅力。
  • 我偶然发现了
  • SameSite 松散实现中的一个旧错误,并且还找到了不改变它的充分理由(例如 none
     有一个默认回退到 
    strict
    ,并且 
    lax
     将是安全性的最佳选择)看法)。所以我就保持这种状态,同时也认为这个 bug 是多年前就被承认的,肯定还有其他原因。
  • 每次进行更改时,我都会清除缓存、路由和配置。这可能有帮助,但还没有解决问题。
  • 我首先使用了
  • file
     会话驱动程序,并检查了权限 - 这些都是有序的,但 419 仍然发生。
  • 我已从
  • file
     会话驱动程序切换到 
    database
     驱动程序,运行迁移并看到会话填充数据库。然而问题依然存在。
我觉得这是客户端的某些东西,或者是配置中的某些东西在提交请求时被激活,但我不知道在哪里寻找了。如果您之前遇到过这个问题,我们非常感谢您的见解。我在这个项目中使用

Laravel 8.75

。如果可能的话,我很乐意提供赏金来解决这个问题。谢谢。

php laravel laravel-8 csrf
3个回答
3
投票
第一个建议是记录所有此类情况,这样您就不会试图猜测原因。为此,您需要在

handle

 中实现 
app/Http/Middleware/VerifyCsrfToken.php
方法

public function handle($request, Closure $next) { try { return parent::handle($request, $next); } catch (TokenMismatchException $e) { Log::error('CSRF exception', [ 'session' => $request->session()->all(), 'cookie' => $request->cookie(), 'session_token' => $request->session()->token(), 'request_token' => $this->getTokenFromRequest($request), 'request_ip' => $request->ip(), 'request_path' => $request->path(), 'user_agent' => $request->userAgent(), // any other data you need ]); throw $e; } }
鉴于您已经尝试了类似问题的所有解决方案,我可以假设用户只是不关闭带有表单的选项卡。会话过期,他们下次尝试登录时会收到此错误。如果是这种情况 - 我可以建议将此 html 标签添加到此页面(在头部部分)

<meta http-equiv="refresh" content="3600">

content

属性指定页面强制刷新的秒数。从您的配置中指定会话的生命周期


0
投票
如果您使用保存的密码应用程序进行自动填充。 当密码字段由 ex 填写时。通过三星保存的密码,浏览器会自动发送请求,在此期间我们单击提交按钮,然后它会得到双重提交并导致错误


-1
投票
这是一个 csrf 问题,正如我所读到的,你正在使用 laravel 8.75

`Laravel 中出现 Session Expired 或 419 Page Expired 错误消息是因为你的 csrf 令牌验证失败,这意味着 App\Http\Middleware\VerifyCsrfToken::class 中间件已经打开。在表单中已经添加了 @csrfblade 指令,这也应该没问题。

然后另一个要检查的区域是会话。 csrf 令牌验证直接涉及您的会话,因此您可能需要检查您的会话驱动程序是否正常工作,例如配置不正确的 Redis 可能会导致问题。` ref : "https://stackoverflow.com/questions /52583886/post-request-in-laravel-error-419-sorry-your-session-419-your-page-has-exp"

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.