为JWT添加了直接校验token是否有效而不需要提供username的功能。提高其鲁棒性
This commit is contained in:
parent
aa9e0d8804
commit
c863f1023b
@ -30,14 +30,35 @@ public class JwtUtil {
|
||||
}
|
||||
|
||||
public static String extractUsername(String token) {
|
||||
return extractClaims(token).getSubject();
|
||||
try {
|
||||
return extractClaims(token).getSubject();
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isTokenValid(String token) {
|
||||
try {
|
||||
extractClaims(token);
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean isTokenValid(String token, String username) {
|
||||
return username.equals(extractClaims(token).getSubject()) && !isTokenExpired(token);
|
||||
try {
|
||||
return username.equals(extractClaims(token).getSubject()) && !isTokenExpired(token);
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isTokenExpired(String token) {
|
||||
return extractClaims(token).getExpiration().before(new Date());
|
||||
try {
|
||||
return extractClaims(token).getExpiration().before(new Date());
|
||||
} catch (Exception e) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,5 +43,15 @@ public class JwtUtilTest {
|
||||
// Validate token expires within 10 hours
|
||||
Assert.assertTrue("Token should expire within 10 hours", expirationTime - currentTime <= 1000 * 60 * 60 * 10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidToken() {
|
||||
String invalidToken = "invalidToken";
|
||||
String validToken = JwtUtil.generateToken("validUser");
|
||||
Assert.assertFalse("Invalid token should not be valid", JwtUtil.isTokenValid(invalidToken));
|
||||
Assert.assertTrue("Valid token should be able to extract", JwtUtil.isTokenValid(validToken));
|
||||
Assert.assertFalse("Invalid token should not be valid", JwtUtil.isTokenValid(invalidToken, "validUser"));
|
||||
Assert.assertTrue("Valid token should be valid", JwtUtil.isTokenValid(validToken, "validUser"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user