【发布时间】:2020-08-17 15:58:40
【问题描述】:
我在使用 sanctum 从 Vue axios 向 laravel 服务器发送 POST 请求时遇到问题。
首先我得到令牌。
我的api.php路线
Route::post('/get_token', function (Request $request) {
$request->validate([
'email' => 'required|email',
'password' => 'required',
'device_name' => 'required'
]);
$user = User::where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
throw ValidationException::withMessages([
'email' => ['The provided credentials are incorrect.'],
]);
}
return $user->createToken($request->device_name)->plainTextToken;
});
vue axios
this.$axios.post('/api/get_token', {
email: this.email,
password: this.password,
device_name: this.device_name,
}).then(response=>{...});
当我使用收到的令牌发送 GET 请求时,它可以正常工作
vue axios
this.$axios.get('/api/book/all', {
headers: {
"Authorization": 'Bearer ' + this.$store.getters.getToken
}
}).then(response=>{...})
api.php
Route::middleware('auth:sanctum')->get('/book/all', 'BookController@all');
但是当我尝试发送 POST 请求时,我收到 {"message":"Unauthenticated."} 和 401 错误
vue axios
this.$axios.post('/api/book/add', {
headers: {
"Authorization": 'Bearer ' + this.$store.getters.getToken,
},
data: {
title: this.addingTitle,
author: this.addingAuthor,
}
})
api.php
Route::middleware('auth:sanctum')->post('/book/add', 'BookController@add');
对不起,我只是一个网络菜鸟,很多东西都不懂,希望你能帮助我。
【问题讨论】:
-
仅
book/add似乎需要根据您共享的内容进行授权,因此book/all有效这一事实并不表明只有其他路线存在问题 -
@apokryfos 是的,问题不仅在于
book/add,它只是我项目中唯一的发布请求;)如果我尝试在没有令牌的情况下向book/all发送获取请求,我也得到 {"message":"Unauthenticated."}。抱歉英语不好