我已經在這個https://www.avyatech.com/rest-api-with-laravel-8-using-jwt-token/的幫助下實作了 JWT 令牌認證
步驟 11. 準備 api 控制器操作->authenticate()
現在,系統管理員允許將用戶記錄標記為活動/非活動(狀態),并且處于非活動狀態的用戶不應能夠登錄系統
登錄邏輯:
public function authenticate(UserRequest $request)
{
$credentials = $request->only('email', 'password');
$request->validated();
//Request is validated
try {
if (!$token = JWTAuth::attempt($credentials)) {
$message = 'Login credentials are invalid.';
$data = [];
return response()->failed($message, $data);
}
} catch (JWTException $e) {
return $credentials;
return response()->json([
'status' => false,
'message' => 'Could not create token.',
'error' => $e
], 500);
}
//Token created, return with success response and jwt token
$message = 'Successfully login.';
$data = [
'token' => $token
];
return response()->success($message, $data);
}
桌子:
User
---------------
-id
-username
-email
-password
-status // active/inactive
我需要包括什么步驟來實作這個邏輯?非活動用戶不得登錄系統
非常感謝!
uj5u.com熱心網友回復:
獲取用戶并在回傳回應之前拋出錯誤:
public function authenticate(UserRequest $request)
{
// ...
$user = User::where('email', $credentials['email'])->first();
if($user === null || $user->status !== 'active') {
$message = 'Your account is not active.';
$data = [];
return response()->failed($message, $data);
}
$message = 'Successfully login.';
$data = [
'token' => $token
];
return response()->success($message, $data);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/316234.html
