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我什么都没修改。我该如何解决这个问题?
这是我的代码:
- 自动散列密码功能(User.php 型号)
public function setPasswordAttribute($password)
{
$this->attributes['password'] = Hash::make($password);
}
- 登录函数(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 函数有一些副作用。
我遇到了一个莫名其妙的问题。我使用 JWTAuth 创建了一个登录功能,它运行良好,JWTAuth::attempt returns 我需要的令牌。但是我在用户模型中添加了Auto-Hash密码功能后,JWTAuth::attempt总是returns false.
我还在用户迁移中添加了softDeletes。是什么导致 JWTAuth::attempt 一直返回 false?因为除了User Model和User Migration我什么都没修改。我该如何解决这个问题?
这是我的代码:
- 自动散列密码功能(User.php 型号)
public function setPasswordAttribute($password)
{
$this->attributes['password'] = Hash::make($password);
}
- 登录函数(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 函数有一些副作用。