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

Laravel 8 Passport Bearer Token认证失效 无中间件路由也触发鉴权跳转

问题解决方案

根因定位

你在app/Http/Kernel.php的api全局中间件组中直接加入了auth:api鉴权中间件,而Laravel默认所有定义在routes/api.php下的路由都会自动加载api中间件组,所以哪怕你没有给单个路由/路由组额外配置鉴权中间件,所有API请求都会触发全局鉴权逻辑,这就是无中间件配置的/greeting路由也会跳转redirectTo方法的核心原因。

修复步骤

  1. 修改app/Http/Kernel.php的$middlewareGroups属性,移除api数组下的'auth:api'项,修改后配置如下:
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],

    'api' => [
        'throttle:api',
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],
];

调整后auth:api中间件只会作用于你手动配置了该中间件的路由组,不会全局生效。

  1. 补充请求头配置
    请求API时务必携带Accept: application/json请求头,否则Laravel的鉴权中间件会判断当前请求为网页请求,校验不通过时触发redirectTo跳转逻辑,而不是返回符合API规范的401错误响应。

  2. 可选优化(API场景适配)
    可以修改app/Http/Middleware/Authenticate.php的redirectTo方法,适配API请求场景,避免不必要的跳转逻辑:

protected function redirectTo($request)
{
    if (! $request->expectsJson()) {
        return route('login');
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 21:27:00