Php 为laravel SPA生成动态csrf令牌
我将laravel 5.6与axios和vue一起用于我的SPA web应用程序。 问题是过了一段时间csrf令牌将过期,因此应该会有一个恼人的提示,告诉用户刷新页面,这不是我要找的。 因此,我对laravel 5.6中csrf令牌的了解是,它在bootstrap.js中的使用方式如下:Php 为laravel SPA生成动态csrf令牌,php,laravel,vue.js,axios,Php,Laravel,Vue.js,Axios,我将laravel 5.6与axios和vue一起用于我的SPA web应用程序。 问题是过了一段时间csrf令牌将过期,因此应该会有一个恼人的提示,告诉用户刷新页面,这不是我要找的。 因此,我对laravel 5.6中csrf令牌的了解是,它在bootstrap.js中的使用方式如下: let token = document.head.querySelector('meta[name="csrf-token"]'); if (token) { window.axios.default
let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-
csrf-token');
}
如何更改此项以在每个请求上获取csrf令牌?创建一个端点以检索最新的csrf令牌: ExampleController.php
public function getCsrf() {
return response(csrf_token());
}
Route:(routes/wew.php)
Route::get('csrf', 'ExampleController@getCsrf');
在Javascript中,您可以请求一个新的csrf令牌,并替换axios实例中的旧令牌。
axios.get('/csrf').then(({ data }) => {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = data;
})
对于这个问题,公认的答案似乎是您可以采用的一个体面的实现来解决您的问题: