我正在使用Laravel 5.6和Axios库(标准的Laravel5.6软件包)进行个人项目开发。
我需要使用Laravel的API和axios的http请求发送GET请求,然后再发送POST请求。但是,由于它是一个仅为VueJS提供从数据库获取内容的内部API,因此我不使用Passport或任何类似的库。
如果我使用auth:api
中间件设置我的API路由,无论请求类型如何,我总是会收到未经授权的响应,这是错误输出:
Error: Request failed with status code 401
错误信息:
message: "Unauthenticated."
但是,根据文档所述,axios头部信息是在laravel的bootstrap.js
中设置的,以从meta标签中读取授权令牌(代码已在那里):
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
// further down the file...
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');
}
如果需要,以下是HTTP请求代码:
axios.post('/api/latest', formData)
那么,如果这些都已设置,为什么我还未经身份验证?
我尝试移除auth:api
中间件,当然,它正常工作:
- Route::middleware('auth:api')->get('/latest', 'InternalApiController@latestEp');
+ Route::get('/latest', 'InternalApiController@latestEp');
我做错了什么?
Route::middleware('auth:api')->get('/latest', 'InternalApiController@latest');
,我仍然会收到相同的错误提示。 - K3nzieauth:api
,它检查api
身份验证守卫。只需使用middleware('auth')
即可解决问题。 - Emile Bergeron