Laravel:身份验证中间件中的多重防护

anh*_*hlt 1 php laravel

我有一个使用不同用户角色的多用户表的Laravel应用程序。

我添加了2个这样的自定义防护:

'guards' => [
    'consumer' => [
        'driver' => 'session',
        'provider' => 'consumer',
    ],
    'member' => [
        'driver' => 'session',
        'provider' => 'member',
    ]
]
Run Code Online (Sandbox Code Playgroud)

我想与消费者和会员共享相同的路线。但是我不知道Laravel如何将防护名称传递给Auth中间件。

看文件 Illuminate\Auth\Middleware\Authenticate

protected function authenticate(array $guards)
{
    if (empty($guards)) {
        return $this->auth->authenticate();
    }

    foreach ($guards as $guard) {
        if ($this->auth->guard($guard)->check()) {
            return $this->auth->shouldUse($guard);
        }
    }

    throw new AuthenticationException('Unauthenticated.', $guards);
}
Run Code Online (Sandbox Code Playgroud)

如果我可以将两个自定义防护传递给$ guards变量,它可以共享自定义和用户之间的路由。但我不知道如何通过后卫的名字

小智 9

您可以用逗号来传递警卫,例如:

    Route::group(['middleware' => ['auth:comsumer, member'] ], function(){
        Route::get('/home', 'HomeController@index');
    });
Run Code Online (Sandbox Code Playgroud)