passport的路由怎么修改

如题,想自定义路由

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
mengdodo
最佳答案

超简单方式

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']);
        });
    }
1年前 评论
王大牛 (楼主) 1年前
讨论数量: 6
mengdodo

超简单方式

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']);
        });
    }
1年前 评论
王大牛 (楼主) 1年前
mengdodo

应该不至于

  "laravel/framework": "^9.19",
  "laravel/passport": "^10.4",

file

1年前 评论
王大牛 (楼主) 1年前
mengdodo (作者) 1年前
class AuthorizationsController extends AccessTokenController
{
    public function store(ServerRequestInterface $request)
    {
        return $this->issueToken($request)->setStatusCode(201);
    }
}
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!