首页 > 解决方案 > Laravel Echo 和 Laravel Ajax 身份验证失败期间的间歇性 419、401、403

问题描述

Laravel 身份验证失败 - 请参阅下面的答案。

我的原始问题:

我在刷新 Laravel 5.6 / Vue 应用程序时间歇性地收到 419 错误。AJAX 出现错误到 /broadcasting/auth 以从我的 channels.php 代码获取身份验证 - 结果我没有连接到频道,并且一些 JS 失败(如预期的那样)。

相同的代码在 95% 的情况下都可以工作,如果我收到错误,我只需刷新(有时 3 或 4 次)它就会工作。

channels.php 身份验证对我连接到的公共和在线频道都是开放的。这意味着我只返回 TRUE 而不进行检查。

我知道 419 错误与 CSRF 有关,但为什么它会通过刷新来工作?我可以修复它以防止它发生什么。

我怀疑超时,但它可以是 30 秒或 15 分钟 - 时间无关紧要。

我无法发布代码,因为它是出厂时的基本代码,所以这是我的设置

WAMP on Windows with PHP 7.2
Laravel 5.6
Echo through Pusher (service)

通过 Google、Safari、Firefox、Canary 测试(所有浏览器都有相同的问题)

我假设 Axios 用于 ajax,但是,它又是内部 app.js / NPM 编译,所以我不确定。

标签: phplaravel-5

解决方案


在谷歌搜索中找到了它......不客气,我也在编辑问题以反映我的实际问题,以便更容易搜索。

顺便说一句php artisan config:cache

谢谢chijipon@ laracasts

当同时进行 XHR 请求时,由于并发请求同时更新会话,会话数据可能会丢失。这是一个已知的问题。一种解决方案可能是减少请求数量,或使用**会话锁定**。这允许在使用时锁定会话文件,从而强制所有请求一个接一个地执行。这可能会减慢您的应用程序,但会消除潜在的错误。

Laravel 默认不包含会话锁定。有人制作了一个 Laravel 包来添加该功能。 https://github.com/rairlie/laravel-locking-session

它似乎对我有用。


推荐阅读