php - 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 编译,所以我不确定。
解决方案
在谷歌搜索中找到了它......不客气,我也在编辑问题以反映我的实际问题,以便更容易搜索。
顺便说一句php artisan config:cache
谢谢chijipon@ laracasts
当同时进行 XHR 请求时,由于并发请求同时更新会话,会话数据可能会丢失。这是一个已知的问题。一种解决方案可能是减少请求数量,或使用**会话锁定**。这允许在使用时锁定会话文件,从而强制所有请求一个接一个地执行。这可能会减慢您的应用程序,但会消除潜在的错误。
Laravel 默认不包含会话锁定。有人制作了一个 Laravel 包来添加该功能。 https://github.com/rairlie/laravel-locking-session
它似乎对我有用。
推荐阅读
- debian - 当 TigerVNC 查看器处于全屏状态并且系统从睡眠中唤醒时,键盘停止工作
- java - Eclipse 无法打开并给我一个很长的错误。[爪哇]
- text - 从 BERT 的最后一层获取注意力向量
- docker - 在 websphere liberty 映像中部署资源适配器和应用程序
- javascript - 我们如何将现有的不支持的 npm 模块添加到 Vue.js
- python - 在 Scikit-learn 训练中嵌入辅助标签置信度数据
- openedge - 断开数据库后,临时表中的数据是否可用?
- python - 无法在 selenium 和 python 中使用 xpath 选择元素
- makefile - 递归调用makefile的优先级是什么?
- azure-devops - 在 DevOps API 中获取 workItem 的拉取请求信息