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

Laravel Passport请求Auth Tokens无响应问题求助

解决Laravel Passport内部请求令牌无响应问题

你遇到的问题是内部Http请求阻塞,原因和对应解决方法如下:

1. 会话锁导致请求死锁

如果你的login方法使用了web中间件(默认带会话管理),当前请求会持有会话锁,而内部发起的oauth/token请求同样需要访问会话,就会造成死锁,请求一直卡住。

解决办法:

  • 将login接口移到api中间件组(对应routes/api.php),api中间件默认不启用会话;
  • 或者在发起Http请求前手动释放会话锁:
protected function login(Request $request)
{
    // ... 其他业务逻辑

    // 释放会话锁,避免内部请求阻塞
    session()->save();

    $response = Http::asForm()
        ->timeout(10) // 增加超时配置,便于排查问题
        ->post(config('app.url').'/oauth/token', [
            'grant_type' => 'password',
            'client_id' => '6',
            'client_secret' => 'GQBBrsDJaV6GgO4uIoXUxOhgp7l7qdlnpB1Bpk5B',
            'username' => 'test@test.com',
            'password' => '123',
            'scope' => '',
        ]);
    
    return $response->json();
}

2. 禁用SSL验证(本地开发场景)

如果本地环境使用http协议,但Http客户端默认尝试验证SSL证书,可能导致请求卡住。可以添加关闭验证的选项:

$response = Http::asForm()
    ->withOptions(['verify' => false])
    ->post(...);

3. 避免硬编码URL

不要直接写http://localhost:8004,改用配置文件中的app.url,适配不同环境:

post(config('app.url').'/oauth/token', [...])

4. 强制设置超时时间

添加超时参数,让请求在指定时间内返回(或抛出错误),快速定位问题:

->timeout(10) // 设置10秒超时

内容的提问来源于stack exchange,提问作者Mai Rich

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:30:17