Php 如果用户处于非活动状态,则停止他使用该应用程序。我怎样才能做到这一点

Php 如果用户处于非活动状态,则停止他使用该应用程序。我怎样才能做到这一点,php,laravel,backend,restapi,Php,Laravel,Backend,Restapi,我正在使用Laravel和JWT令牌为前端开发人员开发后端API。 我将状态(活动、非活动)列放入数据库 如果用户状态为非活动,则限制他使用该应用程序 登录函数的一部分,在活动用户上提供令牌: if ($user->status == 'active') { return response()->json( ['data' => ['token' => $token, 'message' => 'Login

我正在使用Laravel和JWT令牌为前端开发人员开发后端API。 我将状态(活动、非活动)列放入数据库 如果用户状态为非活动,则限制他使用该应用程序

登录函数的一部分,在活动用户上提供令牌:

 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的配置中,您可以设置令牌的有效时间。你想怎么设置就怎么设置,仅此而已。