Laravel9使用passport注册Passport::routes();路由报错

1. 运行环境

windows2012R2
Laravel9x
PHP 版本:php8.2

2. 问题复现

在 App\Providers\AuthServiceProvider.php 文件中注册 Passport::routes路由php artisan serve运行报错

boot 方法如下:

    public function boot()
    {
        $this->registerPolicies();
       if (! $this->app->routesAreCached()) {
           Passport::routes();
       }
        //令牌有效期为2小时
        Passport::tokensExpireIn(now()->addHour(2));

        //刷新令牌认证有效期为7天
        Passport::refreshTokensExpireIn(now()->addDays(7));

        //令牌过期时间为1个月
                        //Passport::personalAccessTokensExpireIn(now()->addMonths(1));

    }

以下方式也报错

    public function boot()
    {
        $this->registerPolicies();
        Passport::routes();
        //令牌有效期为2小时
        Passport::tokensExpireIn(now()->addHour(2));

        //刷新令牌认证有效期为7天
        Passport::refreshTokensExpireIn(now()->addDays(7));

        //令牌过期时间为1个月
        //Passport::personalAccessTokensExpireIn(now()->addMonths(1));

    }
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

新版Passport已经是默认注册路由,不需要Passport::routes()了。可以命令行输入php artisan route:list确认以oauth开头的路由已经完成了注册。如果不需要这些路由,需要在原先写Passport::routes()的地方改为Passport::ignoreRoutes()(这个方法名可能有误,使用时自己查一下)来忽略自动注册路由。

1年前 评论
周小云 1年前
svkp (楼主) 1年前
讨论数量: 7

这是我的, 楼主的报错信息是什么?

<?php

namespace App\Providers;

use App\Repositories\ClientRepository;
use App\Repositories\TokenRepository;
use Laravel\Passport\PassportServiceProvider as ServiceProvider;
use Laravel\Passport\Passport;

class PassportServiceProvider extends ServiceProvider
{

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->registerTokenRepository();

        parent::register();
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        Passport::routes();

        Passport::tokensExpireIn(
            now()->addDays(config('auth.passport.token_expired', 30))
        );

        Passport::refreshTokensExpireIn(
            now()->addDays(config('auth.passport.refresh_expired', 60))
        );


        Passport::personalAccessTokensExpireIn(
            now()->addDays(config('auth.passport.personal_expired', 30))
        );
    }

    /**
     * Register the client repository.
     *
     * @return void
     */
    protected function registerClientRepository()
    {
        $this->app->singleton('Laravel\Passport\ClientRepository', function ($container) {
            $config = $container->make('config')->get('passport.personal_access_client');
            return new ClientRepository($config['id'] ?? null, $config['secret'] ?? null);
        });
    }

    /**
     * Register the client repository.
     *
     * @return void
     */
    protected function registerTokenRepository()
    {
        $this->app->singleton('Laravel\Passport\TokenRepository', function ($container) {
            return new TokenRepository();
        });
    }

}
1年前 评论
svkp (楼主) 1年前

新版Passport已经是默认注册路由,不需要Passport::routes()了。可以命令行输入php artisan route:list确认以oauth开头的路由已经完成了注册。如果不需要这些路由,需要在原先写Passport::routes()的地方改为Passport::ignoreRoutes()(这个方法名可能有误,使用时自己查一下)来忽略自动注册路由。

1年前 评论
周小云 1年前
svkp (楼主) 1年前

file 我的报这个错误,获取到和接收到到 token是一样的,laravel10的框架,auth:api 默认中间件

1个月前 评论

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