diff --git a/src/main/java/cn/celess/blog/util/JwtUtil.java b/src/main/java/cn/celess/blog/util/JwtUtil.java index 8be9373..94b790c 100644 --- a/src/main/java/cn/celess/blog/util/JwtUtil.java +++ b/src/main/java/cn/celess/blog/util/JwtUtil.java @@ -30,6 +30,8 @@ public class JwtUtil { */ public static final long EXPIRATION_SHORT_TIME = 7200000; private static final String CLAIM_KEY_USERNAME = "sub"; + private static final String BEARER_PREFIX_UPPER = "Bearer"; + private static final String BEARER_PREFIX_LOWER = "bearer"; /** * JWT 秘钥需自行设置不可泄露 */ @@ -48,7 +50,7 @@ public class JwtUtil { } public String updateTokenDate(String token) { - Claims claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token).getBody(); + Claims claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(getJwtString(token)).getBody(); return Jwts.builder() .setClaims(claims) .setExpiration(new Date(claims.getExpiration().getTime() + EXPIRATION_SHORT_TIME)) @@ -60,7 +62,7 @@ public class JwtUtil { * 获取token是否过期 */ public Boolean isTokenExpired(String token) { - Date expiration = getExpirationDateFromToken(token); + Date expiration = getExpirationDateFromToken(getJwtString(token)); return expiration == null || expiration.before(new Date()); } @@ -68,7 +70,7 @@ public class JwtUtil { * 根据token获取username */ public String getUsernameFromToken(String token) { - Claims claims = getClaimsFromToken(token); + Claims claims = getClaimsFromToken(getJwtString(token)); return claims == null ? null : claims.getSubject(); } @@ -76,7 +78,7 @@ public class JwtUtil { * 获取token的过期时间 */ public Date getExpirationDateFromToken(String token) { - Claims claims = getClaimsFromToken(token); + Claims claims = getClaimsFromToken(getJwtString(token)); return claims == null ? null : claims.getExpiration(); } @@ -88,7 +90,7 @@ public class JwtUtil { try { claims = Jwts.parser() .setSigningKey(SECRET) - .parseClaimsJws(token) + .parseClaimsJws(getJwtString(token)) .getBody(); } catch (ExpiredJwtException e) { log.info("JWT令牌过期"); @@ -107,4 +109,9 @@ public class JwtUtil { return claims; } + private String getJwtString(String token) { + if (token == null) return token; + return token.replaceFirst(BEARER_PREFIX_UPPER, "").replace(BEARER_PREFIX_LOWER, ""); + } + } diff --git a/src/test/java/cn/celess/blog/BaseTest.java b/src/test/java/cn/celess/blog/BaseTest.java index 20a6603..3a349c3 100644 --- a/src/test/java/cn/celess/blog/BaseTest.java +++ b/src/test/java/cn/celess/blog/BaseTest.java @@ -219,7 +219,7 @@ public class BaseTest { protected ResultActions getMockData(MockHttpServletRequestBuilder builder, String token, Object content) throws Exception { // MockHttpServletRequestBuilder mockHttpServletRequestBuilder = get(url); if (token != null) { - builder.header("Authorization", token); + builder.header("Authorization", "Bearer "+token); } if (content != null) { builder.content(mapper.writeValueAsString(content)).contentType(MediaType.APPLICATION_JSON);