php - 为 laravel SPA 生成动态 csrf-token
问题描述
我将 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());
}
路线:(路线/wew.php)
Route::get('csrf', 'ExampleController@getCsrf');
在您的 Javascript 中,您可以请求新的 csrf 令牌并替换 axios 实例中的旧令牌。
axios.get('/csrf').then(({ data }) => {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = data;
})
推荐阅读
- android-studio - 在 Java (Android Studio) 中从 Activity 转换为 Fragment 时,Bottom_nav_menu 消失
- apache-nifi - 如何使 jsonpath 为名称-值对工作
- mongodb - 未处理的拒绝 Mongo 错误:在运行 mocha 测试时获取 addrinfo ENOTFOUND
- pandas - 我想知道使用熊猫的唯一类别编号
- node.js - 我可以使用 Express 创建客户端应用程序吗?
- c# - 如何使用 mysql 启用实体框架?
- ember.js - Ember Octane Glimmer 组件 @actions 是如何调用的?
- sql - 在一个查询中组合多个 SELECT 语句
- r - 如何通过在 R 中的大型数据框中进行观察来获得前 n 个距离?
- wordpress - Microsoft-IIS/7.5 服务器上的 Wordpress:只有主页有效