From 3f9ebf19e687c33287b0eaec64d4564a212f57db Mon Sep 17 00:00:00 2001
From: mg <maokecheng@163.com>
Date: 星期三, 12 十月 2022 16:59:57 +0800
Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/sccg_server
---
ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java | 63 ++++++++++++++++++++++++++-----
1 files changed, 52 insertions(+), 11 deletions(-)
diff --git a/ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java b/ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java
index 45f2028..594ac79 100644
--- a/ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java
+++ b/ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java
@@ -2,6 +2,11 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.ycl.entity.auth.AuthInfo;
+import com.ycl.enums.common.ResultCode;
+import com.ycl.exception.ApiException;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
@@ -27,7 +32,7 @@
*/
public class JwtTokenUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(JwtTokenUtil.class);
- private static final String CLAIM_KEY_USERNAME = "sub";
+ private static final String CLAIM_KEY_INFO = "sub";
private static final String CLAIM_KEY_CREATED = "created";
@Value("${jwt.secret}")
private String secret;
@@ -91,7 +96,7 @@
* @param userDetails 浠庢暟鎹簱涓煡璇㈠嚭鏉ョ殑鐢ㄦ埛淇℃伅
*/
public boolean validateToken(String token, UserDetails userDetails) {
- String username = getUserNameFromToken(token);
+ String username = parseToken(token).getUsername();
return username.equals(userDetails.getUsername()) && !isTokenExpired(token);
}
@@ -116,7 +121,7 @@
*/
public String generateToken(UserDetails userDetails) {
Map<String, Object> claims = new HashMap<>();
- claims.put(CLAIM_KEY_USERNAME, userDetails.getUsername());
+ claims.put(CLAIM_KEY_INFO, userDetails.getUsername());
claims.put(CLAIM_KEY_CREATED, new Date());
return generateToken(claims);
}
@@ -127,26 +132,26 @@
* @param oldToken 甯okenHead鐨則oken
*/
public String refreshHeadToken(String oldToken) {
- if(StrUtil.isEmpty(oldToken)){
+ if (StrUtil.isEmpty(oldToken)) {
return null;
}
String token = oldToken.substring(tokenHead.length());
- if(StrUtil.isEmpty(token)){
+ if (StrUtil.isEmpty(token)) {
return null;
}
//token鏍¢獙涓嶉�氳繃
Claims claims = getClaimsFromToken(token);
- if(claims==null){
+ if (claims == null) {
return null;
}
//濡傛灉token宸茬粡杩囨湡锛屼笉鏀寔鍒锋柊
- if(isTokenExpired(token)){
+ if (isTokenExpired(token)) {
return null;
}
//濡傛灉token鍦�30鍒嗛挓涔嬪唴鍒氬埛鏂拌繃锛岃繑鍥炲師token
- if(tokenRefreshJustBefore(token,30*60)){
+ if (tokenRefreshJustBefore(token, 30 * 60)) {
return token;
- }else{
+ } else {
claims.put(CLAIM_KEY_CREATED, new Date());
return generateToken(claims);
}
@@ -154,17 +159,53 @@
/**
* 鍒ゆ柇token鍦ㄦ寚瀹氭椂闂村唴鏄惁鍒氬垰鍒锋柊杩�
+ *
* @param token 鍘焧oken
- * @param time 鎸囧畾鏃堕棿锛堢锛�
+ * @param time 鎸囧畾鏃堕棿锛堢锛�
*/
private boolean tokenRefreshJustBefore(String token, int time) {
Claims claims = getClaimsFromToken(token);
Date created = claims.get(CLAIM_KEY_CREATED, Date.class);
Date refreshDate = new Date();
//鍒锋柊鏃堕棿鍦ㄥ垱寤烘椂闂寸殑鎸囧畾鏃堕棿鍐�
- if(refreshDate.after(created)&&refreshDate.before(DateUtil.offsetSecond(created,time))){
+ if (refreshDate.after(created) && refreshDate.before(DateUtil.offsetSecond(created, time))) {
return true;
}
return false;
}
+
+
+
+ /**
+ * 鏍规嵁鐢ㄦ埛id,鐢ㄦ埛鍚嶇敓鎴恡oken
+ */
+ public String generateToken(long userId, String username) {
+ Map<String, Object> claims = new HashMap<>();
+ AuthInfo authInfo = new AuthInfo();
+ authInfo.setUserId(userId);
+ authInfo.setUsername(username);
+ claims.put(CLAIM_KEY_INFO, JSONObject.toJSONString(authInfo));
+ claims.put(CLAIM_KEY_CREATED, new Date());
+ return generateToken(claims);
+ }
+
+ /**
+ * 鏍规嵁token瑙f瀽鍑篈uthInfo
+ * @param token
+ * @return
+ */
+ public AuthInfo parseToken(String token) {
+ AuthInfo authInfo = null;
+ try {
+ if (isTokenExpired(token)) {
+ throw new ApiException(ResultCode.NOT_LOGGED);
+ }
+ Claims claims = getClaimsFromToken(token);
+ String subject = claims.getSubject();
+ authInfo = JSON.parseObject(subject, AuthInfo.class);
+ } catch (Exception e) {
+ throw new ApiException(e.getMessage());
+ }
+ return authInfo;
+ }
}
--
Gitblit v1.8.0