Php 为laravel SPA生成动态csrf令牌

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

我将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.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;
})

对于这个问题,公认的答案似乎是您可以采用的一个体面的实现来解决您的问题: