PHP-Open-Source-Saver / jwt-auth 无效和黑名单 JWT 令牌

Posted

技术标签:

【中文标题】PHP-Open-Source-Saver / jwt-auth 无效和黑名单 JWT 令牌【英文标题】:PHP-Open-Source-Saver / jwt-auth Invalidate and Blacklist JWT Token 【发布时间】:2022-01-17 05:11:26 【问题描述】:

我在 Apache2 服务器上的 php8.0 环境中设置了 Laravel 8.* 项目。我安装了新的PHP-Open-Source-Saver / jwt-auth repo 并实现了必要的中间件来验证 jwt 令牌以及 JwtController 以在登录时生成 jwt 令牌并在需要时刷新。

Api 请求通过以下方式进行身份验证:

$user = JWTAuth::parseToken()->authenticate();

到目前为止,除了 jwt 令牌的 invalidationblacklisting 之外,一切都按照包装盒侧面的说明进行。

我的 jwt 配置黑名单键在 env 中设置为:

JWT_BLACKLIST_ENABLED=true
JWT_BLACKLIST_GRACE_PERIOD=0

我尝试了说明和以下所有方法,每种方法至少两次:

public function jwt_logout(Request $request)

    //get bearer token
    $token = $request->bearerToken();

    if (! isset($token) ) 
        return response()->json([
                'success' => false,
                'message' => 'Token is not set, please retry action or login.'
            ]);
    

    //Invalidate and blacklist methods
    try 
        //JWTAuth::invalidate(JWTAuth::getToken());
        //JWTAuth::invalidate($request->bearerToken());
        //auth("api")->invalidate(true);
        //JWTAuth::invalidate($request->token);
        //JWTAuth::parseToken()->invalidate();
        //\Illuminate\Support\Facades\Auth::setToken($token)->invalidate(true);
        
        JWTAuth::setToken($token)->invalidate(true);

        //auth("api")->logout(true);
        //JWTAuth::invalidate(true);
        //\JWTAuth::manager()->invalidate(new \PHPOpenSourceSaver\JWTAuth\Token($token), $forceForever = true);

        return response()->json([
            'success' => true,
            'message' => 'User has been logged out'
        ]);
     catch (JWTException $exception) 
        return response()->json([
            'success' => false,
            'message' => 'Sorry, user cannot be logged out'
        ], Response::HTTP_INTERNAL_SERVER_ERROR);
    

但是每次我尝试使用在运行上述方法后被列入黑名单的 jwt 令牌时,它仍然允许对用户进行身份验证。没有 JWTBLACKLILTED 异常。没有错误。唯一停止身份验证的是 jwt 令牌过期时。

有人可以帮助深入了解如何使用 invalidateblacklist 一个 jwt 令牌吗?

【问题讨论】:

【参考方案1】:

好的,我找到了答案。默认情况下,包有disabled the showing of a blacklist exceptions。

我只需要在我的 .env 中设置 JWT_SHOW_BLACKLIST_EXCEPTION=1,现在它就可以工作了。没有阅读软件包论坛问题是我的疏忽。

【讨论】:

以上是关于PHP-Open-Source-Saver / jwt-auth 无效和黑名单 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章

求数组中 (i,j) 对的总数,使得 i<j 且 a[i]+a[j]=i+j。 [关闭]

matlab中if、else语句运算结果为啥只显示最后一个if的值?

创建4个线程,两个对j加一,两个对j减一(j两同两内)

找到数组中 (i,j) 对的总数,使得 i<j 和 a[i]>a[j]

bzoj1492--斜率优化DP+cdq分治

Java 中j+=i 和 j=+i 的区别