使用 JWT 在 Laravel 中获取“无效凭据”

Posted

技术标签:

【中文标题】使用 JWT 在 Laravel 中获取“无效凭据”【英文标题】:Getting "invalid credentials" in Laravel using JWT 【发布时间】:2018-03-27 21:42:46 【问题描述】:

我的用户模型:

namespace Modules\Settings\Entities;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Users extends Authenticatable

Protected $table="user";
// protected $primaryKey = 'id';
protected $fillable = ['id','username','password','user_status_type_id','client_id','created_userid'];

protected $hidden = [
    'password', 'remember_token',
];

在我的控制器中:

 public function login(Authentication $request)
   $credentials = $request->only('username', 'password');



    try 
        // verify the credentials and create a token for the user
        $token = JWTAuth::attempt($credentials);


        if (! $token = JWTAuth::attempt($credentials)) 
            return response()->json(['error' => 'invalid_credentials'], 401);
        
     catch (JWTException $e) 
        // something went wrong
        return response()->json(['error' => 'could_not_create_token'], 500);
    

    // if no errors are encountered we can return a JWT
    return response()->json(compact('token'));

我在创建用户时使用了 Hash::make($data->password)。当我在 Postman 中测试它时,我总是得到“无效的凭据”

【问题讨论】:

你到底从邮递员那里寄什么? 用户名和密码 【参考方案1】:

如果您使用版本 0.5.* 并按照文档保留默认设置,JWTAuth::attempt($credentials) 部分将查找输入值 'email' 和 'passowrd' $request->only('email', 'password'); 在您的情况下,您使用的是$request->only('username', 'password');

【讨论】:

以上是关于使用 JWT 在 Laravel 中获取“无效凭据”的主要内容,如果未能解决你的问题,请参考以下文章

无效的凭据引发身份验证突变异常

不断收到 401 未经授权的“无效凭据”Laravel Passport

在 jwt-auth laravel 中获取自定义声明

Auth0 Laravel 获取 JWT 令牌

Laravel,如何从自定义表的 jwt 令牌获取登录用户

使用 JWT 获取令牌而不尝试用户凭据 Laravel?