如何在 1 条路线上使用 2 个角色?

问题描述

请告诉我如何在 1 条路线上使用 2 个角色。我正在使用 Laravel 权限。

路线

Route::group(['middleware' => ['role:user_сitisen']],function () {
    Route::get('/addcitisens',[App\Http\Controllers\CitisenControl::class,'index']);
    Route::get('/citisen/{id}','show']);
    Route::post('/citisen/{id}','update'])->name('citisen');
    Route::get('/destroy/{id}','destroy']);
    Route::post('/citisens','store']);
    Route::get('/citisens/export','CitisenExport']);
});

Route::group(['middleware' => ['role:user_avto']],function () {
    Route::get('/avtoslist',[App\Http\Controllers\AvtosController::class,'index']);
    Route::get('/addavtos','indexAdd']);
    Route::post('/avtos','store']);
});

Route::group(['middleware' => ['role:admin']],'CitisenExport']);
    Route::get('/avtoslist','store']);
    Route::get('/usersList',[App\Http\Controllers\UsersController::class,'index'])->name('usersList');
    Route::get('/addusers','indexUser']);
    Route::post('/users','store']);
    Route::get('/users/{id}','show']);
    Route::post('/users/{id}','update']);
    Route::get('/destroyuser/{id}','destroy']);
});

解决方法

作为文档says

您可以用 | 分隔多个角色或权限(管道)字符:

Route::group(['middleware' => ['role:super-admin|writer']],function () {
    //
});
,

在您的中间件中应用该逻辑。

public function handle($request,Closure $next,... $roles)
{
    if (!Auth::check()) // I included this check because you have it,but it really should be part of your 'auth' middleware,most likely added as part of a route group.
        return redirect('login');

    $user = Auth::user();

    if($user->isAdmin())
        return $next($request);

    foreach($roles as $role) {
        // Check if user has the role This check will depend on how your roles are set up
        if($user->hasRole($role))
            return $next($request);
    }

    return redirect('login');
}
,

是的,但您也可以在中间件中进行更改。

Route::group(['middleware' => ['auth','web','roles'],'roles'=>['admin','driver']],function() {

});
,

| 分隔。

Route::group(['middleware'=>['role:admin|user']],function(){

来源:https://spatie.be/docs/laravel-permission/v4/basic-usage/middleware

引用:Alternatively,you can separate multiple roles or permission with a | (pipe) character:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...