【发布时间】:2019-04-26 23:05:19
【问题描述】:
有没有办法用你自己的身份验证保护覆盖护照路由中间件?
在我的 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 中,我的警卫设置如下 - 请注意提供者是 users 表,所以我唯一想要实现的是通过指定警卫来更改护照路由中的默认身份验证:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'recruiter' => [
'driver' => 'session',
'provider' => 'users',
],
],
我是否需要编写自己的护照路由来实现这一点,如果需要,我是否只需将它们粘贴在 routes.php 文件中并从引导方法中删除 Passport::routes()?
Passport::routes() 方法的回调选项是什么,我可以使用它来覆盖现有路由吗?
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));
});
}
我们将不胜感激一些指导以及一些代码 sn-p 以获得支持。
【问题讨论】:
标签: laravel-5.6 laravel-passport