spatie / laravel-permission可以返回always true

2nbm6dog  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(92)

当使用laravel spatie permissions时,在创建权限,角色,为用户分配角色时,一切正常。但是当使用$this->authorize('View Country') OR $user->can('View Country')时,总是返回true。我使用laravelv9.0和spatie/permissionsv5.5并尝试了一些解决方案,如:

  • 升级空间/权限到v6.0
  • 运行php artisan optimize

但什么也没发生

为用户分配角色:

$user = Admin::findOrFail(request('user_id'));
        $role = Role::findOrFail(request('role_id'));
        $user->syncRoles([$role->name]);
        return redirect()->route('admin.admins.index')->with('success', __(" Successfully"));

创建角色权限并同步

$role = Role::find(request('role_id', 1));
        foreach ($request->permissions as $permisssion) {
            $permisssions[] = Permission::firstOrCreate([
                'name' => $permisssion,
                'guard_name' => 'admin'
            ]);
        }
        $role->syncPermissions($permisssions ?? []);
gev0vcfq

gev0vcfq1#

通常是包中的缓存问题。尝试清除缓存(php artisan cache:clear)并让包处理缓存。

相关问题