8戎T纱瘛!级乍!轉(zhuǎn)載請注明作者和本文鏈接I嗬汀!C等佟甚淡!
上篇說到了可以Passport自帶路由,我們可以進行注冊捅厂。但是我們卻不想使用Passport自帶的路由怎么辦贯卦?
我們來看看Passport的注冊路由函數(shù)
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));
});
}
我們可以看到這個函數(shù)有兩個參數(shù)
第一個參數(shù):callback
這個參數(shù)是個回調(diào),看最后Route::group里面的代碼焙贷,這個回調(diào)的定義類似如下這種
function(RouteRegistrar $router) {
//...
}
而其中的RouteRegistrar撵割,里面就提供了Passport路由具體的注冊,具體的代碼詳情可以看vendor/laravel/passport/src/RouteRegistrar.php辙芍,里面也給出了授權(quán)啡彬,獲取accesstoken等等一些系列接口,還能看到具體這些接口的方法沸手,路由定義等等
第二個參數(shù):options
$defaultOptions = [
'prefix' => 'oauth',
'namespace' => '\Laravel\Passport\Http\Controllers',
];
這個Options是Route::group中使用的參數(shù)外遇,其意義和Route::group中規(guī)定的是一樣的,可以用來配置這組路由的中間件契吉、命名空間跳仿、子域名、路由前綴等等捐晶。從Passport的代碼來看菲语,Passport會提供兩個prefix和namespace兩個默認設(shè)置。所以惑灵,我們可以通過修改Options來達到自定義配置的目的山上。
比如,我這個項目Api是有路由前綴的英支,那么就修改prefix佩憾,代碼如下
//不帶回調(diào),默認注冊Passport所有路由
Passport::routes(null,['prefix' => 'api/oauth']);
或者
//帶回調(diào),只想保留AccessToken相關(guān)路由
Passport::routes(function(RouteRegistrar $router) {
$router->forAccessTokens();
},['prefix' => 'api/oauth']);
最后就會發(fā)現(xiàn)妄帘,本來是post http://host/oauth/token可以獲取到access token楞黄,現(xiàn)在修改了前綴,需要post http://host/api/oauth/token才能獲取到了
預(yù)告:下一篇會寫如何自定義返回內(nèi)容
B胀铡9砝!致盟!轉(zhuǎn)載請注明作者和本文鏈接K樗啊!A笪雷蹂!