laravel 我们之前已经见过很多次了,但没有一种解决方案奏效:419在移动的上

bhmjp9jg  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(121)

bounty将在3天后过期。回答此问题可获得+400声望奖励。Ben Fransen正在寻找标准答案:我看到很多人都在为这个问题而挣扎,似乎手头上没有真正的解决方案。我想解决这个问题,并奖励400代表与银之一。谢谢。

我想,在这一点上,我可以告诉你作者的名字和准确的张贴日期,为这个问题在其他地方在线,如果你给予我一个错误描述与Laravel的网页过期419在移动的上.所以,是的,这就是这个问题了.我怎么解决它?

  • 我发现用户在使用移动的时遇到了与我的应用程序登录页面的摩擦。通常它会给出错误419,页面过期。不用说csrf令牌就在那里。它在桌面上也像一个魅力一样工作。
  • 我在SameSite lax implementation中偶然发现了一个旧的bug,并且找到了不改变它的好理由(例如,none有一个默认的strict后备,而lax从安全的Angular 来看是最好的选择)。
  • 我已经清除了缓存,路由,和配置后,我所做的每一个变化。这可能会有帮助,但还没有解决问题。
  • 我首先使用了file会话驱动程序,并检查了权限-这些都是有序的,但仍然发生了419。
  • 我已经从file会话驱动程序切换到database驱动程序,运行迁移并看到会话填充数据库。但是,问题仍然存在。

我觉得这是客户端的东西,或者是在提交请求时激活的配置中的东西,但是我不知道在哪里寻找更多的东西。如果你在你的见解非常感谢之前遇到过这个问题。我在这个项目中使用Laravel 8.75。我很乐意在可能的时候提供赏金来解决这个问题。谢谢。

ffscu2ro

ffscu2ro1#

第一条建议是记录所有这样的情况,这样您就不必猜测原因了。

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标记添加到此页面(在head部分)

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

content属性指定强制刷新页的秒数。在该属性中指定配置中的会话生存期

相关问题