路线上不止一名警卫


more than one guard in route

>我使用laravel框架,我想在我的路由中使用多个守卫,例如:

   Route::group([ 'middleware' => 'jwt.auth', 'guard' => ['biker','customer','operator']], function () {}

我有一个脚本AuthServiceProvider.php如下在引导部分:

  $this->app['router']->matched(function ('Illuminate'Routing'Events'RouteMatched $event) {
        $route = $event->route;
        if (!array_has($route->getAction(), 'guard')) {
            return;
        }
        $routeGuard = array_get($route->getAction(), 'guard');
        $this->app['auth']->resolveUsersUsing(function ($guard = null) use ($routeGuard) {
            return $this->app['auth']->guard($routeGuard)->user();
        });
        $this->app['auth']->setDefaultDriver($routeGuard);
    });

这只需要一个像'guard'=>'biker'
这样的后卫那么如何在AuthServiceProvider中更改该代码.php以在路由中使用多个守卫

我知道

这是一个老问题,但我刚刚经历了这个问题,并想出了如何自己解决它。这可能对其他人有用。解决方案非常简单,您只需要在中间件名称后指定每个保护,用逗号分隔,如下所示:

Route::group(['middleware' => ['auth:biker,customer,operator'], function() {
    // ...
});

然后,守卫被发送到'Illuminate'Auth'Middleware'Authenticate函数authenticate(array $guards),该函数检查数组中提供的每个守卫。

这适用于 Laravel 5.4。也适用于拉拉维尔6.0。