我有一个使用多用户表的Laravel应用程序用于不同的角色。
我添加了2个这样的自定义守卫:
'guards' => [
'consumer' => [
'driver' => 'session',
'provider' => 'consumer',
],
'member' => [
'driver' => 'session',
'provider' => 'member',
]
]
我想与消费者和会员分享同一条路线。但我不知道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);
}
如果我可以将2个自定义守卫传递给$ guards变量,它可以共享自定义和用户之间的路由。但我不知道如何通过后卫的名字
答案 0 :(得分:4)
你可以用逗号传递守卫,例如:
Route::group(['middleware' => ['auth:comsumer, member'] ], function(){
Route::get('/home', 'HomeController@index');
});
答案 1 :(得分:0)
在定义路线组时,请执行以下操作:
Route::group(['middleware' => 'auth:guard_name'], function () {
//Your Route goes here
}
希望能解决你的问题。