Laravel JWTAuth::attempt突然返回False

Laravel JWTAuth::attempt suddenly returning False

我遇到了一个莫名其妙的问题。我使用 JWTAuth 创建了一个登录功能,它运行良好,JWTAuth::attempt returns 我需要的令牌。但是我在用户模型中添加了Auto-Hash密码功能后,JWTAuth::attempt总是returns false.

我还在用户迁移中添加了softDeletes。是什么导致 JWTAuth::attempt 一直返回 false?因为除了User Model和User Migration我什么都没修改。我该如何解决这个问题?

这是我的代码:

  1. 自动散列密码功能(User.php 型号)
    public function setPasswordAttribute($password)
    {   
        $this->attributes['password'] = Hash::make($password);
    }
  1. 登录函数(AuthController.php控制器)
public function login(Request $request)
    {
        $credentials = $request->only('email', 'password');
        
        try {
            $token = JWTAuth::attempt($credentials);
            return response()->json(['status' => 'success','token' => $token], 200);
        } catch(Exception $e){
            return response()->json(['error' => $e], 401);
        }
    }

您可以用来检查凭据。

    $credentials = $request->only('email', 'password');

    if (false === ($token = JWTAuth::attempt($credentials))) {
        return response()->json(['status' => 'error'], 400);
    }         
 
    return response()->json(['status' => 'success', 'token' => $token], 200);

此外,只需在您的控制器或服务中使用 auto-hash。也许您的 setPasswordAttribute 函数有一些副作用。