Php 如果用户处于非活动状态,则停止他使用该应用程序。我怎样才能做到这一点
我正在使用Laravel和JWT令牌为前端开发人员开发后端API。 我将状态(活动、非活动)列放入数据库 如果用户状态为非活动,则限制他使用该应用程序 登录函数的一部分,在活动用户上提供令牌:Php 如果用户处于非活动状态,则停止他使用该应用程序。我怎样才能做到这一点,php,laravel,backend,restapi,Php,Laravel,Backend,Restapi,我正在使用Laravel和JWT令牌为前端开发人员开发后端API。 我将状态(活动、非活动)列放入数据库 如果用户状态为非活动,则限制他使用该应用程序 登录函数的一部分,在活动用户上提供令牌: if ($user->status == 'active') { return response()->json( ['data' => ['token' => $token, 'message' => 'Login
if ($user->status == 'active') {
return response()->json(
['data' => ['token' => $token, 'message' => 'Login successfully.', 'status' => true, 'user' => $user]],
200
);
}
if ($user->status == 'inactive') {
return response()->json(
['data' => ['token' => '', 'message' => 'User is inactive.', 'status' => false]],
200
);
}
我的中间件:
public function handle($request, Closure $next)
{
try {
$user = JWTAuth::parseToken()->authenticate();
} catch (Exception $e) {
if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
return response()->json(['data' => ['message' => 'Token is Invalid.', 'status' => false]],
200);
} else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
return response()->json(['data' => ['message' => 'Token is Expired.', 'status' => false]], 200);
} else {
return response()->json(['data' => ['message' => 'Authorization Token not found.', 'status' => false]], 200);
}
}
return $next($request);
}
您需要编写另一个中间件来检查用户是否处于活动状态。
将其放在
auth
中间件之后,并在时返回403
$用户->处于活动状态
您需要编写另一个中间件来检查用户是否处于活动状态。
将其放在
auth
中间件之后,并在时返回403
$用户->处于活动状态
要检查用户处于活动状态或非活动状态,最好在另一个中间件中进行检查,但如果要在此中间件中检查用户处于活动状态或非活动状态。最简单的方法是:
public function handle($request, Closure $next)
{
try {
$user = JWTAuth::parseToken()->authenticate();
if ($user->status == 'inactive') {
return response()->json(['data' => ['token' => '', 'message' => 'User is inactive.', 'status' => false]], 403);
}
} catch (Exception $e) {
if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
return response()->json(['data' => ['message' => 'Token is Invalid.', 'status' => false]],
200);
} else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
return response()->json(['data' => ['message' => 'Token is Expired.', 'status' => false]], 200);
} else {
return response()->json(['data' => ['message' => 'Authorization Token not found.', 'status' => false]], 200);
}
}
return $next($request);
}
对于检查用户是活动的还是非活动的,最好在另一个中间件中检查它,但是如果您想在这个中间件中检查用户是活动的还是非活动的。最简单的方法是:
public function handle($request, Closure $next)
{
try {
$user = JWTAuth::parseToken()->authenticate();
if ($user->status == 'inactive') {
return response()->json(['data' => ['token' => '', 'message' => 'User is inactive.', 'status' => false]], 403);
}
} catch (Exception $e) {
if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
return response()->json(['data' => ['message' => 'Token is Invalid.', 'status' => false]],
200);
} else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
return response()->json(['data' => ['message' => 'Token is Expired.', 'status' => false]], 200);
} else {
return response()->json(['data' => ['message' => 'Authorization Token not found.', 'status' => false]], 200);
}
}
return $next($request);
}
在jwt的配置中,您有一个设置来设置令牌应有效的分钟数。在jwt的配置中,您可以设置令牌的有效时间。你想怎么设置就怎么设置,仅此而已。