From 983bdb5b89932b38d08a11ad1eed6ea89d1597e1 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期一, 29 一月 2024 10:07:31 +0800 Subject: [PATCH] 更新 --- assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 54 insertions(+), 2 deletions(-) diff --git a/assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java b/assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java index cd30016..0447a9a 100644 --- a/assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java +++ b/assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java @@ -1,18 +1,25 @@ package com.gkhy.assess.common.utils; +import cn.hutool.core.date.DateUtil; import cn.hutool.crypto.digest.DigestUtil; import com.auth0.jwt.JWT; import com.auth0.jwt.JWTVerifier; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.exceptions.JWTDecodeException; import com.auth0.jwt.interfaces.DecodedJWT; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.gkhy.assess.common.api.CommonResult; import com.gkhy.assess.common.exception.ApiException; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.crypto.hash.Md5Hash; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; import java.util.Date; /** @@ -37,8 +44,13 @@ public static String tokenHead=""; - /**Token有效期为7天(Token在reids中缓存时间为两倍)*/ - public static final long EXPIRATION=(7 * 12) * 60 * 60 * 1000; //JWT的超期限时间(60*60*24*7) + /**Token有效期为1天(Token在reids中缓存时间为两倍) 单位ms*/ + public static final long EXPIRATION=(1 * 24) * 60 * 60 * 1000; //JWT的超期限时间(60*60*24*1) + + /** + * token有效期还有30分钟,刷新token 单位ms + */ + public static final long NEED_UPDATE_TIME= 30 * 60 * 1000; /** * 校验token是否正确 @@ -56,6 +68,20 @@ }catch (Exception e){ return false; } + } + + + public static boolean isNeedUpdate(String token,String username,String secret){ + Date expertsAt =null; + try { + Algorithm algorithm = Algorithm.HMAC256(secret); + JWTVerifier verifier = JWT.require(algorithm).withClaim("username", username).build(); + expertsAt = verifier.verify(token).getExpiresAt(); + }catch (Exception e){ + throw new ApiException("token非法无效"); + } + //如果剩余过期时间少于过期时常的一半时 需要更新 + return (expertsAt.getTime()-System.currentTimeMillis()) < NEED_UPDATE_TIME; } /** @@ -127,4 +153,30 @@ } + /** + * + * @param response + * @param code + * @param errorMsg + */ + public static void responseError(ServletResponse response, String errorMsg) { + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + // issues/I4YH95浏览器显示乱码问题 + httpServletResponse.setHeader("Content-type", "text/html;charset=UTF-8"); + CommonResult jsonResult = CommonResult.failed(errorMsg); + OutputStream os = null; + try { + os = httpServletResponse.getOutputStream(); + httpServletResponse.setCharacterEncoding("UTF-8"); + // httpServletResponse.setStatus(code); + os.write(new ObjectMapper().writeValueAsString(jsonResult).getBytes("UTF-8")); + os.flush(); + os.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + } -- Gitblit v1.9.2