如何仅检查(状态)活动用户可以登录-JWT Auth-Laravel
Posted
技术标签:
【中文标题】如何仅检查(状态)活动用户可以登录-JWT Auth-Laravel【英文标题】:How to check only (status)active user can able to login- JWT Auth -Laravel 【发布时间】:2021-12-03 00:27:37 【问题描述】:我已经在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
我需要包含哪些步骤才能实现此逻辑?非活动用户不得登录系统
非常感谢!
【问题讨论】:
【参考方案1】:在返回响应之前获取用户并抛出错误:
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);
【讨论】:
感谢您的帮助!这行得通:) @Emma Your Wellcome,您可以接受适用于该社区的其他人寻求解决方案的答案。 @a-seddighi 完成!以上是关于如何仅检查(状态)活动用户可以登录-JWT Auth-Laravel的主要内容,如果未能解决你的问题,请参考以下文章
如何判断用户是不是使用仅限 http 的 cookie 和 JWT 登录(客户端)
如何在 iOS 和 Android 的给定时间检测用户是不是仅在一台设备上处于活动状态
Django JWT Auth 和 Vue:如何检查用户是不是登录 Vue?