【发布时间】:2021-06-05 08:02:47
【问题描述】:
我正在使用 laravel 策略在使用 laravel nova 构建的应用程序后端验证用户操作。我也在这个项目中使用 spatie 权限和角色包https://spatie.be/docs/laravel-permission/v3/introduction。
我有一个 UserTransactionPolicy,它允许具有特定角色的用户查看用户的交易,并且只允许具有特定权限的用户查看。
public function viewAny(User $user)
{
return $user->hasRole('admin');
}
public function view(User $user, UserTransaction $userTransaction)
{
return $user->hasRole('admin');
}
public function create(User $user)
{
return $user->hasPermissionTo('create');
}
在 AuthServiceProvider 中,我已经像这样在 $policies 数组中注册了该政策以及其他政策
// other policies
'App\Models\UserTransaction' => 'App\Policies\UserTransactionPolicy',
// more policies
在 nova 上,经过身份验证的用户具有管理员角色和创建权限,前两个策略工作正常,但创建策略不断抛出错误
对不起!您无权执行此操作
要查看的前两个策略是很久以前添加的,而创建策略是今天才添加的。因此,我在 AuthServiceProvider 中注释掉了该策略,以确保新更改实际生效,但令我惊讶的是,即使现在我看到所有 nova 操作按钮,我仍然收到相同的错误。
有没有办法刷新策略列表以防缓存出现问题?还是我做错了什么?
【问题讨论】:
标签: laravel