Laravel用于某些路线的多个中间件

时间:2016-12-17 11:34:53

标签: php laravel routing roles middleware

我正在使用laravel 5.2开发Web应用程序。 我需要的是我有一些以角色为特色的账户。我必须有可以访问1路线但其他角色无法访问的角色。我有浏览,我做了我发现的所有事情

Route::group(['prefix' => '/', 'middleware' => ['role:user_a','role:user_b']], function(){someroute}

Route::group(['prefix' => '/', 'middleware' => ['role:user_a|role:user_b']], function(){someroute}

Route::group(['prefix' => '/', 'middleware' => ['role:user_a,role:user_b']], function(){someroute}
没有人工作。我不知道如何使我的单一路线可以被2个角色访问但是禁用其他角色

2 个答案:

答案 0 :(得分:0)

我认为你不能这样做,但你可以这样使用。

Route::group(['prefix'=>'/', 'middleware' =>['role:user_a','role:user_b']],function(){

      Route::group(['prefix'=>'userAorB', 'middleware' =>['role:user_a|role:user_b']],function(){ Routes });
      Route::group(['prefix'=>'userAANDB', 'middleware' =>['role:user_a,role:user_b']],function(){ Routes });

})

答案 1 :(得分:0)

您可以创建名为role的中间件,详细了解文档中的中间件here

中间件的handle方法如下:

public function handle($request, Closure $next)
{
    if (auth()->user()->role('b')) {
        return redirect('home');
    }
    // else users of other roles can visit the page
    return $next($request);
}

然后您可以在路径文件中将其用作:

Route::group(['middleware' => 'role'], function () {
    // someroute
});