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

1. 问题描述?

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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());
        }
    }
}
1年前 评论
讨论数量: 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());
        }
    }
}
1年前 评论

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