【问题标题】:Issue with Laravel PolicyLaravel 政策问题
【发布时间】: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


    【解决方案1】:

    您可能需要通过在终端中运行以下命令来重置角色和权限的缓存,如spatie doc中所述

    php artisan permission:cache-reset 
    

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 2020-03-30
      • 2020-12-23
      • 2011-05-08
      • 2013-06-28
      • 2020-01-15
      • 2021-06-24
      • 1970-01-01
      相关资源
      最近更新 更多