在我的引导方法中,我使用回调方法覆盖了所有passport路由:
public function boot()
{
$guard = 'auth';
$prefix = 'oauth';
if ($this->app->request->is('recruiter/*')){
$guard = 'auth:recruiter';
$prefix = 'recruiter/oauth';
}
Passport::routes(function ($router) use ($guard) {
// forAuthorization
Route::group(['middleware' => ['web', $guard]], function ($router) {
$router->get('/authorize', [
'uses' => 'AuthorizationController@authorize',
]);
$router->post('/authorize', [
'uses' => 'ApproveAuthorizationController@approve',
]);
$router->delete('/authorize', [
'uses' => 'DenyAuthorizationController@deny',
]);
});
// all other routes...
}, ['prefix' => $prefix]);
}
我还更新了开箱即用vue组件的url,如下所示,方法是预先添加一个基本url——在我的例子中,基本url也定义了要使用的保护。
getClients() {
axios.get('/' + baseUrl + '/oauth/clients')
.then(response => {
this.clients = response.data;
});
},
我将基本url值存储在脚本标记内的主布局模板中,因为我对每种类型的用户都有不同的布局模板,例如:
<script>
var baseUrl = "recruiter";
</script>
<form method="post" action="/{{ Request::segment(1) }}/oauth/authorize">
注意:只有当多重身份验证提供程序都是
users