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

Laravel Passport授权异常:输入正确信息仍返回False

问题分析与修复方案

核心问题1:Guard使用错误

你当前用Auth::guard('web')->attempt()做验证,但Laravel Passport的API授权依赖api guard(需确保config/auth.php里api guard的driver设为passport)。同时,验证后用$request->user()可能无法正确获取已验证用户(默认调用默认guard),且web guard的验证逻辑和API场景不匹配,这是验证始终失败的关键原因之一。

核心问题2:User模型缺失Passport必要Trait

你的User模型必须引入HasApiTokens trait才能调用createToken生成Passport令牌,缺失这个trait不仅会导致令牌生成失败,还会让guard关联的模型不具备Passport授权能力,间接影响验证逻辑。

其他潜在问题

  • $this->successStatus未定义:控制器里没声明该属性,成功响应时会抛出错误。
  • 错误响应方式错误:API接口不该返回back()重定向,需返回JSON格式错误信息。
  • 密码字段长度不足:数据库password字段如果长度小于60位(bcrypt哈希值固定长度),会截断哈希值,导致验证失败。
  • Email大小写问题:Laravel默认区分Email大小写,若用户输入的Email和数据库存储的大小写不一致,会验证失败。

修复步骤

1. 完善User模型

确保User模型引入HasApiTokens trait:

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable; // 必须包含HasApiTokens

    // ... 其他模型代码
}

2. 修改AuthController的login方法

调整guard使用方式,修正响应逻辑:

public function login(Request $request)
{
    // 统一转为小写避免Email大小写问题
    $credentials = [
        'email' => strtolower($request->input('email')),
        'password' => $request->input('password')
    ];

    // 使用api guard进行验证
    if (Auth::guard('api')->attempt($credentials)) {
        $user = Auth::guard('api')->user();
        $success['token'] = $user->createToken('MyApp')->accessToken;
        
        // 直接用HTTP状态码200替代未定义的successStatus
        return response()->json(['success' => $success], 200);
    } else {
        // API返回JSON格式错误
        return response()->json(['error' => '登录失败,请检查您的邮箱和密码'], 401);
    }
}

3. 检查数据库配置

确认users表的password字段类型为varchar(255),避免哈希值被截断。

4. 验证Auth配置

打开config/auth.php,确认api guard配置正确:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport', // 必须设置为passport
        'provider' => 'users',
    ],
],

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:35:40