JWT身份验证始终返回未经授权的401

时间:2020-05-10 11:08:42

标签: laravel axios jwt-auth

我正在为我的laravel 6项目实现JWT令牌。我已按照本教程进行操作,并成功配置了应用程序以使用JWT。我还可以使用返回JWT令牌的auth()->attempt($credentials)登录。

现在,当我尝试访问任何其他api路由并在请求标头中发送jwt令牌进行授权时,它总是返回401 (Unauthorized)

这是我的代码

api.php

Route::group([

    'prefix' => 'auth'

], function ($router) {

    Route::post('login', 'Auth\React\RAuthController@login');
    Route::post('get_user_pages', 'Auth\React\RAuthController@getUserPages');

});

axios请求

const response = await axios.post('http://127.0.0.1:8000/api/auth/get_user_pages', {}, {
     headers: {"Authorization": `Bearer ${cookie.load('token')}`}
})
.then(function (response) {
     console.log(response);
})
.catch(function (error) {
     console.log(error);
});

控制器功能

public function getUserPages()
{
    $auth_user_id = auth()->id();

    $user_role_id = User::find($auth_user_id)->roles->makeHidden('pivot')->pluck('id')->first();

    return $user_pages = ROLE::find($user_role_id)->pages->toArray();
}

我不知道何时可以访问登录路由,为什么不访问其他路由?

1 个答案:

答案 0 :(得分:0)

尝试编辑路线

Route::group([
    'middleware' => 'api',
    'prefix' => 'auth'

], function ($router) {

    Route::post('login', 'Auth\React\RAuthController@login');
    Route::post('get_user_pages', 'Auth\React\RAuthController@getUserPages');

});

内部config/auth.php文件:

'guards' => [
    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
],