Laravel Spatie 中间件使用角色 OR 权限



我正在使用Laravel Spatie软件包,我已经插入了我想要的所有权限和一个管理员角色。

我想做什么:

我正在尝试检查每个路由用户是否是管理员(可以做任何事情(或不是管理员并具有一定的权限。

我尝试过的:

我试图添加|标志。

// GET ALL SEASONS
Route::get('/', 'SeasonsController@index')
            -> name('index')
            -> middleware(['role:admin|permission:seasons show active']);

发生了什么 VS 预期行为:

每当我使用具有seasons show active权限的用户登录时,我都会得到403 Forbidden.

但是,如果我删除了role:admin则用户将获得权限。

建议仅使用权限。

向角色管理员授予所有权限(季节显示活动...等(。然后,中间件中就不需要角色:管理员了。

要授予角色管理员代码的所有权限,如下所示,应该可以完成这项工作

$permissions = SpatiePermissionModelsPermission::all()
$role = SpatiePermissionModelsRole::where('name', 'admin')->first();
// foreach on permissions
 $role->givePermissionTo($permission);
// end foreach 
您可以通过

在中间件上应用来同时使用角色和权限

    //
});
Route::group(['middleware' => ['permission:publish articles|edit articles']], function () {
    //
});
Route::group(['middleware' => ['role_or_permission:super-admin|edit articles']], function () {

您可以通过在构造函数中设置所需的中间件来类似地保护控制器:

{
    $this->middleware(['role:super-admin','permission:publish articles|edit articles']);
}```

最新更新