Commit 1477e0ad by zhangxingmin

push

parent 0089f13b
...@@ -52,13 +52,13 @@ public class SfpTokenUtil { ...@@ -52,13 +52,13 @@ public class SfpTokenUtil {
seal = "SFP2023!@#"; seal = "SFP2023!@#";
issuer = "sfpfamilyfinancialplanning"; issuer = "sfpfamilyfinancialplanning";
expiration = 2592000L; // 24小时 expiration = 2592000L; // 24小时
log.info("SfpTokenUtil 加载生产环境配置, issuer: {}, expiration: {} 秒", issuer, expiration); log.info("SfpTokenUtil 加载生产环境配置, seal: {}, issuer: {}, expiration: {} 秒", seal, issuer, expiration);
} else { } else {
// 测试/开发环境配置(请替换为实际的测试密钥) // 测试/开发环境配置(请替换为实际的测试密钥)
seal = "zhb123!@#"; seal = "zhb123!@#";
issuer = "zuihuibi"; issuer = "zuihuibi";
expiration = 2592000L; expiration = 2592000L;
log.info("SfpTokenUtil 加载测试环境配置, issuer: {}, expiration: {} 秒", issuer, expiration); log.info("SfpTokenUtil 加载测试环境配置, seal: {},issuer: {}, expiration: {} 秒", seal, issuer, expiration);
} }
} }
...@@ -104,24 +104,37 @@ public class SfpTokenUtil { ...@@ -104,24 +104,37 @@ public class SfpTokenUtil {
String resultCode = "SUCCESS"; String resultCode = "SUCCESS";
Claims claims = null; Claims claims = null;
log.info("SfpTokenUtil.getClaimsFromToken - 原始 token (前50字符): {}",
token != null ? token.substring(0, Math.min(50, token.length())) + "..." : "null");
try { try {
// 去除 issuer 前缀(如果存在)
String realToken = token; String realToken = token;
if (token.startsWith(issuer + " ")) { if (issuer != null && token.startsWith(issuer + " ")) {
realToken = token.substring(issuer.length() + 1); realToken = token.substring(issuer.length() + 1);
log.info("SfpTokenUtil.getClaimsFromToken - 已剥离前缀 '{} ',realToken 前50字符: {}",
issuer, realToken.substring(0, Math.min(50, realToken.length())) + "...");
} else {
log.info("SfpTokenUtil.getClaimsFromToken - token 不以 '{} ' 开头,未剥离", issuer);
} }
log.info("SfpTokenUtil.getClaimsFromToken - 当前使用的 seal 前缀: {}",
seal != null ? seal.substring(0, Math.min(4, seal.length())) + "..." : "null");
Jws<Claims> jwsClaims = Jwts.parser() Jws<Claims> jwsClaims = Jwts.parser()
.setSigningKey(seal) .setSigningKey(seal)
.parseClaimsJws(realToken); .parseClaimsJws(realToken);
claims = jwsClaims.getBody(); claims = jwsClaims.getBody();
log.info("SfpTokenUtil.getClaimsFromToken - 解析成功,claims: {}", claims);
} catch (ExpiredJwtException e) { } catch (ExpiredJwtException e) {
resultCode = "EXPIRED"; resultCode = "EXPIRED";
log.warn("SfpTokenUtil.getClaimsFromToken - Token 已过期: {}", e.getMessage());
} catch (UnsupportedJwtException | MalformedJwtException | SignatureException | IllegalArgumentException e) { } catch (UnsupportedJwtException | MalformedJwtException | SignatureException | IllegalArgumentException e) {
resultCode = "INVALID"; resultCode = "INVALID";
log.warn("SfpTokenUtil.getClaimsFromToken - Token 无效, 异常类型: {}, 消息: {}",
e.getClass().getSimpleName(), e.getMessage());
} catch (Exception e) { } catch (Exception e) {
resultCode = "INVALID"; resultCode = "INVALID";
log.error("SfpTokenUtil.getClaimsFromToken - 未知异常: ", e);
} }
map.put("resultCode", resultCode); map.put("resultCode", resultCode);
...@@ -137,12 +150,22 @@ public class SfpTokenUtil { ...@@ -137,12 +150,22 @@ public class SfpTokenUtil {
*/ */
public static String getUserIdFromToken(String token) { public static String getUserIdFromToken(String token) {
Map<String, Object> map = getClaimsFromToken(token); Map<String, Object> map = getClaimsFromToken(token);
if ("SUCCESS".equals(map.get("resultCode"))) { String resultCode = (String) map.get("resultCode");
if ("SUCCESS".equals(resultCode)) {
Claims claims = (Claims) map.get("claims"); Claims claims = (Claims) map.get("claims");
if (claims != null) { if (claims != null) {
Object userId = claims.get(CLAIM_KEY_USERID); Object userId = claims.get(CLAIM_KEY_USERID);
return userId != null ? userId.toString() : null; if (userId != null) {
log.info("SfpTokenUtil.getUserIdFromToken - 成功获取 UserId: {}", userId);
return userId.toString();
} else {
log.warn("SfpTokenUtil.getUserIdFromToken - Claims 中缺少 '{}' 字段", CLAIM_KEY_USERID);
}
} else {
log.warn("SfpTokenUtil.getUserIdFromToken - Claims 为空");
} }
} else {
log.warn("SfpTokenUtil.getUserIdFromToken - 解析失败,resultCode: {}", resultCode);
} }
return null; return null;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment