我正在使用Laravel 5.7设置REST API . 要验证身份验证I JWT-auth,对于权限和角色,我使用Spatie .
我的问题:当尝试将角色链接到用户时,我收到以下错误
Spatie \ Permission \ Exceptions \ RoleDoesNotExist
There is no role named admin.
该角色确实存在于数据库中:
这就是我试图为用户分配角色的方式:
$user = User::findOrFail(1);
$user->assignRole('admin');
因为我'm new to Laravel I'我不确定它是否相关,但设置JWT我必须将 config/auth.php
中的后卫的驱动程序更改为 jwt
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
我看不出我做错了什么 . 我添加了角色,然后尝试将角色添加到用户 .
2 回答
检查应用名称空间 . 如果您从
App
更新了它,请务必在config/auth.php
中更新它 .另一方面,如果未更新
App
命名空间,请尝试清除缓存并重新设置数据库表的种子 .Also 如果您有
protected $guard_name = 'api';
,请检查用户模型 .希望这可以帮助 . 干杯!
我假设你已经手动将角色添加到数据库中 . 如果不使用内置的create方法,则会缓存角色并导致问题 .
您需要使用
php artisan cache:clear
手动清除缓存 .更好的方法是使用播种机(用于永久角色)或Tinker运行代码来创建角色和权限,这将触发清除缓存 .