gpt4 book ai didi

php - 不止一名 guard 在路上

转载 作者:可可西里 更新时间:2023-11-01 00:19:07 24 4
gpt4 key购买 nike

我使用 laravel 框架我想在我的 route 使用多个守卫,例如:

   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 中的代码以在路由中使用多个 gaurd

最佳答案

我知道这是一个老问题,但我刚刚解决了这个问题并弄清楚了如何自己解决它。这可能对其他人有用。解决方案非常简单,您只需在您的中间件名称后指定每个守卫,并用逗号分隔,如下所示:

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

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

这适用于 Laravel 5.4。也适用于 Laravel 6.0。

关于php - 不止一名 guard 在路上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39369568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com