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

Laravel Passport认证问题:有效令牌仍提示未授权排查

Laravel Passport 认证返回"Unauthenticated"的问题排查

一、Token 返回格式错误

你的登录方法中,$user->createToken('LaravelAuthApp')返回的是Laravel\Passport\PersonalAccessTokenResult实例,并非直接可用的令牌字符串,前端无法用这个对象完成认证。需要返回实例中的plainTextToken属性:

// 错误写法
return response()->json(['token' => $token], 200);

// 正确写法
return response()->json(['token' => $token->plainTextToken], 200);

二、认证守卫上下文不匹配

登录时你使用Auth::guard('web')->attempt($credentials),web守卫默认是Session驱动,而API路由用的auth:api守卫是Passport Token驱动,两者认证上下文不兼容。需改用API守卫验证凭证:

// 错误写法
if (!Auth::guard('web')->attempt($credentials)) {
    return response()->json(['message' => 'Unauthorized'], 401);
}

// 正确写法
if (!Auth::guard('api')->attempt($credentials)) {
    return response()->json(['message' => 'Unauthorized'], 401);
}

三、请求令牌携带方式不规范

即使拿到正确令牌,请求API时必须按规范携带:在请求头中添加Authorization: Bearer {你的令牌字符串},默认情况下Passport只识别这种Bearer认证头,不要将令牌放在URL参数或请求体中。

额外检查项

  1. 确认User模型已引入Laravel\Passport\HasApiTokens trait:
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
    // ...
}
  1. 确认config/auth.php中api守卫驱动配置为passport:
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],
  1. 已执行Passport安装命令:
php artisan passport:install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:35:00