tymon/jwt-auth 如何精准获取是过期还是超时刷新时间?

1. 问题描述?

目的:想通过这两种状态返回给前端,让前端知道
1:token过期但未超出最终过期实际还是能够刷新token,直接调用刷新接口返回新token。
2:直接返回无法刷新让前端直接跳转登录页面。
这种该如何实现? 大哥们

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

有对应的 Exception,其中 TokenExpiredException 代表过期,继而调用 refresh() 刷新令牌,如果抛出 JWTException 则代表无法再刷新。jwt-auth 异常如下:UnauthorizedHttpException 未携带token,TokenExpiredException 令牌过期,TokenInvalidException 无法解析的令牌,JWTException 令牌已在黑名单或超出刷新时间上限或内部错误。

try {
    $this->checkForToken($request);
    if ( $this->auth->parseToken()->authenticate() ) {
    return $next($request);
    }
}catch(Exception $e){
    if ($e instanceof TokenExpiredException) {
        try{// 过期异常
        $token = $this->auth->refresh();//尝试刷新,如达到刷新时间上限抛出异常
        return Y::json(6666, $e->getMessage(),['access_token'=>$token]); 
        }catch(JWTException $e){
        // 令牌失效或者达到刷新上限
        return Y::json(7777, $e->getMessage());
        }
    }
}
2年前 评论
讨论数量: 1

有对应的 Exception,其中 TokenExpiredException 代表过期,继而调用 refresh() 刷新令牌,如果抛出 JWTException 则代表无法再刷新。jwt-auth 异常如下:UnauthorizedHttpException 未携带token,TokenExpiredException 令牌过期,TokenInvalidException 无法解析的令牌,JWTException 令牌已在黑名单或超出刷新时间上限或内部错误。

try {
    $this->checkForToken($request);
    if ( $this->auth->parseToken()->authenticate() ) {
    return $next($request);
    }
}catch(Exception $e){
    if ($e instanceof TokenExpiredException) {
        try{// 过期异常
        $token = $this->auth->refresh();//尝试刷新,如达到刷新时间上限抛出异常
        return Y::json(6666, $e->getMessage(),['access_token'=>$token]); 
        }catch(JWTException $e){
        // 令牌失效或者达到刷新上限
        return Y::json(7777, $e->getMessage());
        }
    }
}
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!