繁体   English   中英

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

[英]Laravel Spatie middleware using role OR permission

我正在使用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用户将获得权限。

最好只使用权限。

将所有权限授予您的角色管理员(季节显示为活动中...等)。 这样,您就不需要中间件中的role:admin了。

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

$permissions = \Spatie\Permission\Models\Permission::all()

$role = \Spatie\Permission\Models\Role::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']);
}```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM