!!!!转载请注明作者和本文链接!!!!
上篇说到了可以Passport自带路由,我们可以进行注册。但是我们却不想使用Passport自带的路由怎么办?
我们来看看Passport的注册路由函数
Passport::routes()
vendor/laravel/passport/src/Passport.php
/**
* Binds the Passport routes into the controller.
*
* @param callable|null $callback
* @param array $options
* @return void
*/
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));
});
}
我们可以看到这个函数有两个参数
第一个参数:callback
这个参数是个回调,看最后Route::group里面的代码,这个回调的定义类似如下这种
function(RouteRegistrar $router) {
//...
}
而其中的RouteRegistrar,里面就提供了Passport路由具体的注册,具体的代码详情可以看vendor/laravel/passport/src/RouteRegistrar.php,里面也给出了授权,获取accesstoken等等一些系列接口,还能看到具体这些接口的方法,路由定义等等
第二个参数:options
$defaultOptions = [
'prefix' => 'oauth',
'namespace' => '\Laravel\Passport\Http\Controllers',
];
这个Options是Route::group中使用的参数,其意义和Route::group中规定的是一样的,可以用来配置这组路由的中间件、命名空间、子域名、路由前缀等等。从Passport的代码来看,Passport会提供两个prefix和namespace两个默认设置。所以,我们可以通过修改Options来达到自定义配置的目的。
比如,我这个项目Api是有路由前缀的,那么就修改prefix,代码如下
//不带回调,默认注册Passport所有路由
Passport::routes(null,['prefix' => 'api/oauth']);
或者
//带回调,只想保留AccessToken相关路由
Passport::routes(function(RouteRegistrar $router) {
$router->forAccessTokens();
},['prefix' => 'api/oauth']);
最后就会发现,本来是post http://host/oauth/token可以获取到access token,现在修改了前缀,需要post http://host/api/oauth/token才能获取到了
预告:下一篇会写如何自定义返回内容
!!!!转载请注明作者和本文链接!!!!
网友评论