讨论数量:
超简单方式
app/Providers/AuthServiceProvider.php
public function boot()
{
Passport::routes(null, ['prefix' => 'api/v1/oauth']);
}
超详细自定义路由
public function boot()
{
$this->registerPolicies();
if (! $this->app->routesAreCached()) {
//Passport配置
Passport::routes(function (RouteRegistrar $router) {
//隐藏其他非必需路由,增强安全性
$this->forAuthorization(); //授权Html页面
$router->forAccessTokens(); //获取token
$router->forTransientTokens(); //刷新refresh_token
$this->forClients(); //自定义client的中间件
$router->forPersonalAccessTokens(); //personal_access_token
});
Passport::tokensExpireIn(now()->addDays(15));
Passport::refreshTokensExpireIn(now()->addDays(30));
Passport::personalAccessTokensExpireIn(now()->addMonths(6));
Passport::tokensCan([
'basic-user-info' => '用户的用户名和邮箱等基本信息',
]);
Passport::setDefaultScope([
'basic-user-info',
]);
}
}
protected function forAuthorization()
{
Route::group(['middleware' => ['web', 'auth.redirect']], function ($router) {
$router->get('/authorize', [
'uses' => 'AuthorizationController@authorize',
'as' => 'passport.authorizations.authorize',
]);
$router->post('/authorize', [
'uses' => 'ApproveAuthorizationController@approve',
'as' => 'passport.authorizations.approve',
]);
$router->delete('/authorize', [
'uses' => 'DenyAuthorizationController@deny',
'as' => 'passport.authorizations.deny',
]);
});
}
protected function forClients()
{
Route::group(['middleware' => ['web', 'auth', 'oauth.privilege']], function ($router) {
$router->get('/clients', ['uses' => 'ClientController@forUser', 'as' => 'passport.clients.index']);
$router->post('/clients', ['uses' => 'ClientController@store', 'as' => 'passport.clients.store']);
$router->put('/clients/{client_id}', ['uses' => 'ClientController@update', 'as' => 'passport.clients.update']);
$router->delete('/clients/{client_id}', ['uses' => 'ClientController@destroy', 'as' => 'passport.clients.destroy']);
});
}
超简单方式
超详细自定义路由