You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Passport $tokenResult为null,无需修改vendor的限流替代方案

解决Laravel Passport令牌认证$tokenResult为null及限流规则修改的最佳实践

问题场景

使用Laravel Passport实现令牌认证时,出现$tokenResult返回null的情况,推测是触发了默认的throttle:60,1限流规则。临时修改了vendor\laravel\passport\routes\web.php文件调整限流参数:

Route::post('/token', [
    'uses' => 'AccessTokenController@issueToken',
    'as' => 'token',
    'middleware' => 'throttle:300,1',
]);

但直接修改vendor目录不符合开发规范,需寻找合规的替代方案。

当前请求代码

$data = [ 
    'username' => $request->mobileNo,
    'password' => $randomPassword,
    'client_id' => $oauthClient->id,
    'client_secret' => $oauthClient->secret,
    'grant_type' => 'password',
];
$request = app('request')->create('/oauth/token', 'POST', $data);
$tokenResult = json_decode(app()->handle($request)->getContent());

推荐替代方案

方案1:发布Passport路由并重写

  1. 执行命令将Passport的路由文件发布到项目本地目录:
php artisan vendor:publish --tag=passport-routes
  1. 项目根目录的routes/auth.php会生成完整的Passport路由配置,直接修改该文件中/oauth/token路由的中间件参数即可,无需改动vendor目录。

方案2:在RouteServiceProvider中动态调整限流

若需要根据环境或业务条件动态配置限流规则,可在App\Providers\RouteServiceProvider的boot方法中覆盖原有路由配置:

public function boot()
{
    parent::boot();

    Route::middleware('web')
        ->prefix('oauth')
        ->group(function () {
            Route::post('/token', [
                'uses' => '\Laravel\Passport\Http\Controllers\AccessTokenController@issueToken',
                'as' => 'token',
                'middleware' => 'throttle:300,1',
            ]);
        });
}

该方式可灵活调整限流参数,同时避免修改第三方依赖文件。


内容的提问来源于stack exchange,提问作者V K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:22:39