当我向服务器发出快速 ajax 请求时,Laravel 更改了我的 CSRF 令牌

问题描述

我知道如何在表单和 ajax 请求中使用 Laravel CSRF 令牌。

我可以发出一次性的 ajax 请求并且它可以工作。

但是如果我非常快速地发出两个 ajax POST 请求(比如快速点击按钮两次),Laravel 会更改我的 CSRF 令牌,因此第二个请求失败。然后页面上的表单也会失败。

如果我每秒点击一次按钮,一切正常。只有快速或并发请求才能更改 CSRF 令牌。

有什么想法吗?

我使用的是 Laravel 8.21.0

解决方法

问题是我运行 Auth::login(user) 来在每个页面请求中登录我们中间件中的用户。事实证明 Laravel 不喜欢那样。

所以现在我只在用户实际登录时调用一次。

现在似乎可以工作了。