使用Laravel Passport做Api認(rèn)證(二)——自定義路由配置

?。。?!轉(zhuǎn)載請(qǐng)注明作者和本文鏈接?。。?!

上篇說到了可以Passport自帶路由,我們可以進(jìn)行注冊(cè)。但是我們卻不想使用Passport自帶的路由怎么辦?

我們來看看Passport的注冊(cè)路由函數(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));
        });
    }

我們可以看到這個(gè)函數(shù)有兩個(gè)參數(shù)

第一個(gè)參數(shù):callback

這個(gè)參數(shù)是個(gè)回調(diào),看最后Route::group里面的代碼,這個(gè)回調(diào)的定義類似如下這種

function(RouteRegistrar $router) {
    //...
}

而其中的RouteRegistrar,里面就提供了Passport路由具體的注冊(cè),具體的代碼詳情可以看vendor/laravel/passport/src/RouteRegistrar.php,里面也給出了授權(quán),獲取accesstoken等等一些系列接口,還能看到具體這些接口的方法,路由定義等等

第二個(gè)參數(shù):options

       $defaultOptions = [
            'prefix' => 'oauth',
            'namespace' => '\Laravel\Passport\Http\Controllers',
        ];

這個(gè)Options是Route::group中使用的參數(shù),其意義和Route::group中規(guī)定的是一樣的,可以用來配置這組路由的中間件、命名空間、子域名、路由前綴等等。從Passport的代碼來看,Passport會(huì)提供兩個(gè)prefix和namespace兩個(gè)默認(rèn)設(shè)置。所以,我們可以通過修改Options來達(dá)到自定義配置的目的。
比如,我這個(gè)項(xiàng)目Api是有路由前綴的,那么就修改prefix,代碼如下

//不帶回調(diào),默認(rèn)注冊(cè)Passport所有路由
Passport::routes(null,['prefix' => 'api/oauth']);

或者

//帶回調(diào),只想保留AccessToken相關(guān)路由
Passport::routes(function(RouteRegistrar $router) {
    $router->forAccessTokens();
},['prefix' => 'api/oauth']);

最后就會(huì)發(fā)現(xiàn),本來是post http://host/oauth/token可以獲取到access token,現(xiàn)在修改了前綴,需要post http://host/api/oauth/token才能獲取到了

預(yù)告:下一篇會(huì)寫如何自定義返回內(nèi)容

!?。?!轉(zhuǎn)載請(qǐng)注明作者和本文鏈接?。。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容