From d729d924aff31c769b90adc99d998d38cdf50ec0 Mon Sep 17 00:00:00 2001 From: liyanqi <15181887205@163.com> Date: 星期五, 09 九月 2022 22:06:33 +0800 Subject: [PATCH] 修复一些问题 --- ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java | 54 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 44 insertions(+), 10 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..1ebaabf 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; @@ -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,46 @@ /** * 鍒ゆ柇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; } + + 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; + } + + /** + * 鏍规嵁鐢ㄦ埛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); + } } -- Gitblit v1.8.0