在练习Laravel 实战开发知乎:前后端分离 API token 认证这节时,因为高版本的跟5.4版本的有所区别,所以将laravel5.8下的API token认证在这儿作以记录。
在app.blade.php这个模板页头部 <!– CSRF Token –>段落后加入,即
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<!-- API Token -->
<meta name="api-token" content="{{ Auth::check() ? 'Bearer '.Auth::user()->api_token : 'Bearer ' }}">
然后在resources/js/bootstrap.js里大概43行后加入如下代码
let apiToken = document.head.querySelector('meta[name="api-token"]');
if (apiToken != 'Bearer ') {
window.axios.defaults.headers.common['Authorization'] = apiToken.content;
} else {
console.error('API token not found');
}
加入后,部分代码如下
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');
}
let apiToken = document.head.querySelector('meta[name="api-token"]');
if (apiToken != 'Bearer ') {
window.axios.defaults.headers.common['Authorization'] = apiToken.content;
} else {
console.error('API token not found');
}
这样便解决了API调用时401错误。