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

Laravel Passport登录认证失败问题求助

排查Laravel OAuth登录的"invalid_credentials"错误

问题描述

我使用Postman向localhost/api/login提交用户名和密码时收到错误信息:

{"error": "invalid_credentials", "message": "The user credentials were incorrect."}

注册功能正常运行,我的LoginController代码如下:

private $client;
public function __construct(){ $this->client = Client::find(1); }
public function login(Request $request){ 
    $this->validate($request, [ 
        'username' => 'required', 
        'password' => 'required' 
    ]); 
    return $this->issueToken($request, 'password'); 
}

我的issueToken方法代码:

public function issueToken(Request $request, $grantType, $scope = ""){ 
    $params = [ 
        'grant_type' => $grantType, 
        'client_id' => $this->client->id, 
        'client_secret' => $this->client->secret, 
        'scope' => $scope 
    ]; 
    if($grantType !== 'social'){ 
        $params['username'] = $request->username ?: $request->email; 
    } 
    $request->request->add($params); 
    $proxy = Request::create('oauth/token', 'POST'); 
    return Route::dispatch($proxy); 
}

请问问题出在哪里?

可能的排查方向

我帮你梳理几个大概率的问题点,结合你的代码逐一排查:

  • 密码存储是否正确加密
    注册正常但登录失败,首先要确认注册时密码是用Hash::make()加密后存入数据库的。如果注册时直接存了明文,Passport的密码验证逻辑肯定会失败。你可以去users表查看password字段,正常应该是一串长哈希字符串,而不是你注册时输入的明文密码。

  • 登录字段是否匹配
    Laravel Passport的密码授权默认是用email作为用户名标识的(除非你特意修改了配置)。你的代码里把$request->username传给了params['username'],如果你的用户表实际是用email作为登录字段,而Postman里传的是username参数,或者反过来,就会找不到对应的用户。
    可以试试在Postman里把请求参数改成email,或者调整issueToken里的逻辑,确保传递的字段和用户表的登录字段一致。

  • OAuth客户端配置是否正确
    你在构造函数里直接取了Client::find(1),要确认这个客户端的id和secret是正确的,而且该客户端支持password授权类型。去oauth_clients表看看,password_client字段是否为1(Passport里标识这是密码授权客户端)。

  • 请求参数的传递方式是否正确
    Postman发送请求时,要把参数放在form-data或者x-www-form-urlencoded中,而不是raw的JSON格式。因为你的代码是从$request->request(表单请求参数)里取值,如果传的是JSON,可能导致$request->username取不到值,最终传给OAuth接口的用户名是空的,自然验证失败。

  • 临时调试看实际参数
    最快的排查方式是在issueToken方法里加一行dd($params);,看看最终传给oauth/token的参数到底是什么,重点检查username、client_id、client_secret这些关键值是否正确,一眼就能定位参数问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:09:52