在 Laravel 路由中间件中定义 Auth 中间件,可以快捷的进行身份验证并获取登录的用户信息,但是当我们的项目中定义了多个 Auth:guard 时,要怎么在路由中间件中配置呢?

比如我们的项目中有学生、教师和机构三种用户,我们对应定义了三个 Guard,分别为:

'guards' => [
    'student' => [
        'driver' => 'session',
        'provider' => 'students',
    ],
    'teacher' => [
        'driver' => 'session',
        'provider' => 'teachers',
    ],
    'partner' => [
        'driver' => 'session',
        'provider' => 'partners',
    ],
],

我们希望当任意一个 Auth:guard 通过验证时,都可以访问同一个路由,可以使用逗号在中间件中传递 Guard:

Route::group(['middleware' => ['auth:student,teacher,partner'] ], function(){
    Route::get('/home', 'HomeController@index');
});

这样就可以实现,登录的账号通过任意一个 Guard 就可以访问 /home 了。