Laravel 5.7 + Spatie 权限 + JWT 身份验证

And*_*uiz 4 php jwt laravel spatie

我正在使用 Laravel 5.7 设置 REST API。为了验证身份验证,我使用JWT-auth以及我使用Spatie 的权限和角色。

我的问题:尝试将角色链接到用户时,出现以下错误

Spatie \ Permission \ Exceptions \ RoleDoesNotExist
There is no role named admin.
Run Code Online (Sandbox Code Playgroud)

该角色确实存在于数据库中: 在此处输入图片说明

这就是我尝试为用户分配角色的方式:

$user = User::findOrFail(1);
$user->assignRole('admin');
Run Code Online (Sandbox Code Playgroud)

由于我是 Laravel 的新手,我不确定它是否相关,但是设置 JWT 我不得不将警卫的驱动程序更改config/auth.phpjwt

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
],
Run Code Online (Sandbox Code Playgroud)

我看不出我做错了什么。我添加了角色,然后尝试将角色添加到用户。

pet*_*wah 5

检查您的应用命名空间。如果您从 更新它App,请务必在config/auth.php.

另一方面,如果您没有更新App命名空间,请尝试清除缓存并重新设置数据库表的种子。

php artisan config:cache
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)

如果您protected $guard_name = 'api';在那里,还要检查用户模型。

希望这可以帮助。干杯!