From 983bdb5b89932b38d08a11ad1eed6ea89d1597e1 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: Mon, 29 Jan 2024 10:07:31 +0800
Subject: [PATCH] 更新
---
assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java | 71 ++++++++++++++++++++++++++++++++++-
1 files changed, 69 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 fec4f2d..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,17 +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;
/**
@@ -36,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是否正确
@@ -55,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;
}
/**
@@ -111,5 +138,45 @@
}
+ /**
+ * 密码加密
+ * @param username
+ * @param password
+ * @param salt
+ * @return
+ */
+ public static String encryptPassword(String username,String password,String salt){
+ if(salt==null){
+ salt="";
+ }
+ return new Md5Hash(username+password+salt).toHex();
+ }
+
+
+ /**
+ *
+ * @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