当使用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 ?? []);
1条答案
按热度按时间gev0vcfq1#
通常是包中的缓存问题。尝试清除缓存(
php artisan cache:clear
)并让包处理缓存。