Laravel 使用SPA的CSRF令牌
我使用Vue js作为SPA,使用Laravel作为后端。这一切都很好,但一旦提交了一个表单,crsf令牌显然没有刷新,因此当我去提交另一个表单时,我会得到一个Laravel 使用SPA的CSRF令牌,laravel,vue.js,csrf,Laravel,Vue.js,Csrf,我使用Vue js作为SPA,使用Laravel作为后端。这一切都很好,但一旦提交了一个表单,crsf令牌显然没有刷新,因此当我去提交另一个表单时,我会得到一个令牌不匹配异常 我无法将csrf令牌放入表单中,因为vue在尝试渲染时会抛出错误,因为表单是vue中的一个组件 通过搜索name=\u token,我可以使用vue的默认公共头访问csrf令牌,该令牌将在第一个请求上工作,但在Laravel之后的任何请求上,由于当前登录的用户最近使用了该令牌,因此将返回TokenMismatchExcep
令牌不匹配异常
我无法将csrf令牌放入表单中,因为vue在尝试渲染时会抛出错误,因为表单是vue中的一个组件
通过搜索name=\u token
,我可以使用vue的默认公共头访问csrf令牌,该令牌将在第一个请求上工作,但在Laravel之后的任何请求上,由于当前登录的用户最近使用了该令牌,因此将返回TokenMismatchException
我需要找到一种方法,使令牌可以在不刷新页面的情况下刷新,因为这样它就不会是SPA
任何帮助都将不胜感激
谢谢。由于您的第二句话有点不对劲,您的设置中出现了一些古怪的东西,可能是Vue的一些配置:
我可以通过以下方式使用vue的默认公用标头访问csrf令牌:
正在搜索name=\u令牌,该令牌将在第一个请求上工作,但在
Laravel之后的任何请求都将返回一个TokenMismatchException作为
当前登录的用户最近使用了令牌
上述情况并非如此,除非他们已注销并重新登录,否则您可以继续使用相同的令牌
目前,我正在以Laravel为后端构建几个SPA,我唯一一次真正提交传统表单是在登录或注销过程中(因此需要刷新整个页面)。剩下的时间,它只是使用相同的标记的同一页 您可以使用csrf标记值创建一个局部变量,并将其分配给窗口,如下所示(在主布局刀片文件中):
另一个解决方法(根本不推荐)是在中间件中禁用它
在app/Http/Middleware/VerifyCsrfToken.php中
protected $except = [
"your/path/to/ignore"
];
但我会选择第一个选项。不,这只是说明如何访问csrf令牌。我可以照我解释的那样做。问题是,例如,一旦我登录,我就不能再次使用相同的csrf令牌,它需要刷新,但由于页面没有刷新,令牌无法刷新@manniLyou可以1)2)每次通过Xhr生成一个新的令牌,您使用的是哪个中间件?
axios.post("/some/path", { my: data, _token: AppSettings.csrfToken })
.then(response => {
console.log(response.data);
})
protected $except = [
"your/path/to/ignore"
];