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

Laravel 9 + Passport + Vue.js API调用401未授权问题求助

排查Laravel Passport API 401 Unauthorized问题

以下是针对你遇到的同middleware组部分接口401的具体排查步骤:

  • 核对路由Middleware分组
    检查api.php中返回401的路由,是否确实和/users/me、logout处于同一个auth:api中间件组内。留意是否存在拼写错误,或部分路由被意外排除在分组外:

    // 正确分组示例
    Route::middleware('auth:api')->group(function () {
        Route::get('/users/me', [UserController::class, 'me']);
        Route::post('/logout', [AuthController::class, 'logout']);
        // 确保其他需授权路由也在该组内
        Route::get('/posts', [PostController::class, 'index']);
    });
    
  • 验证Token的Scope权限
    如果路由设置了Passport Scope,检查登录时获取的Token是否包含对应权限。比如部分路由可能添加了scopes中间件:

    Route::get('/posts', [PostController::class, 'index'])->middleware('scopes:view-posts');
    

    此时需确认登录请求是否申请了view-posts Scope,或移除不必要的Scope限制做测试。

  • 检查Token的有效性
    查看数据库oauth_access_tokens表,确认当前使用的Token的expires_at未过期、revoked字段为0。若Token已过期或被吊销,即使请求头携带也会返回401。

  • 确认请求头格式与传递
    使用Postman等工具手动携带Authorization: Bearer {token}请求头调用401接口,验证是否能正常访问。若Postman可访问,说明前端请求拦截器可能存在问题,比如部分接口未正确携带Token,或Token处理逻辑出错。

  • 检查Passport核心配置
    确认config/auth.php中API Guard的驱动设置为Passport:

    'guards' => [
        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
    ],
    

    同时确保已执行Passport迁移命令php artisan migrate,相关OAuth表已正常创建。

  • 查看Laravel错误日志
    打开storage/logs/laravel.log,查找对应401请求的详细错误信息,日志会明确指出Token无效、权限不足或Scope不匹配等具体原因,这是最直接的排查依据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:35:23