向 laravel 服务器发送 POST 请求时获取 "message":"Unauthenticated."

Posted

技术标签:

【中文标题】向 laravel 服务器发送 POST 请求时获取 "message":"Unauthenticated."【英文标题】:Get "message":"Unauthenticated." when sending POST request to laravel server向 laravel 服务器发送 POST 请求时获取 "message":"Unauthenticated." 【发布时间】: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."。抱歉英语不好 【参考方案1】:

如果您使用post,则第一个参数是 URL,第二个参数是您发布的数据。在您的情况下,使用它可能更有意义:

this.$axios(
    method: 'POST',
    url: '/api/book/add'
    headers: 
        "Authorization": 'Bearer ' + this.$store.getters.getToken,
    ,
    data: 
        title: this.addingTitle,
        author: this.addingAuthor,
    
)

或者如果你还想继续使用.post,那么:

this.$axios.post('/api/book/add', 
        title: this.addingTitle,
        author: this.addingAuthor,
    , 
    headers: 
        "Authorization": 'Bearer ' + this.$store.getters.getToken,
    
)


【讨论】:

非常感谢,没想到问题出在前面

以上是关于向 laravel 服务器发送 POST 请求时获取 "message":"Unauthenticated."的主要内容,如果未能解决你的问题,请参考以下文章

我正在向 laravel 中的控制器发送一个发布请求,但它显示 500 错误

如何使用 Postman 处理 Laravel $_POST 请求

React Native / Laravel - 向 API 发送请求

如何在 Laravel-8 和 InertiaJs 中向服务器发出 POST 请求时在浏览器中保留当前的 ​​GET url

如何用php向服务器发送post请求

向 Cassini Web 服务器发送请求 URI 为“/”的 POST 请求,导致 405 错误。为啥?