Есть ли способ переопределить промежуточное ПО для паспортного маршрута с вашим собственным средством проверки подлинности?
В моем методе загрузки AuthServiceProvider я могу сделать следующее, но он просто объединяет промежуточное ПО со значениями по умолчанию (https://github.com/laravel/passport/blob/master/src/Passport.php):
public function boot()
{
$this->registerPolicies();
Passport::routes(null, ['middleware' => 'auth:recruiters']);
}
Например, приведенное выше дает мне следующее промежуточное программное обеспечение, примененное к маршрутам:
GET|HEAD | oauth/authorize | | Laravel\Passport\Http\Controllers\AuthorizationController@authorize | auth:recruiters,web,auth
Я хочу полностью удалить промежуточное программное обеспечение auth
там, где оно применяетсяк любым паспортным маршрутам и замените на auth:recruiter
или на любой другой охранник.
В моем config / auth.php мои охранники настроены следующим образом - обратите внимание, что провайдер - это таблица пользователей, поэтому единственное, что я хочуЧтобы реализовать это, нужно изменить аутентификацию по умолчанию в паспортных маршрутах, указав охрану:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'recruiter' => [
'driver' => 'session',
'provider' => 'users',
],
],
Нужно ли мне писать собственные паспортные маршруты для достижения этой цели, и если это так, я просто добавляю их в маршруты.php файл и удалить Passport::routes()
из метода загрузки?
Какая опция обратного вызова в методе Passport::routes()
, могу ли я использовать это, возможно, для переопределения существующего маршрутаes?
public static function routes($callback = null, array $options = [])
{
$callback = $callback ?: function ($router) {
$router->all();
};
$defaultOptions = [
'prefix' => 'oauth',
'namespace' => '\Laravel\Passport\Http\Controllers',
];
$options = array_merge($defaultOptions, $options);
Route::group($options, function ($router) use ($callback) {
$callback(new RouteRegistrar($router));
});
}
Было бы полезно получить некоторые рекомендации вместе с фрагментом кода для поддержки.