JWTService.java
Код: Выделить всё
@Service
public class JWTService {
private static final SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
@Value("${jwt.token-validity}")
private Integer tokenValidity;
@Nullable
public String getLogin(@NotNull String token) {
return extractClaim(token, Claims::getSubject);
}
private Claims getClaims(@NotNull String token) {
return Jwts
.parserBuilder()
.setSigningKey(key)
.build()
.parseClaimsJws(token)
.getBody();
}
private T extractClaim(@NotNull String token, @NotNull Function claimsResolver) {
return claimsResolver.apply(getClaims(token));
}
public String generateToken(@NotNull String login) {
return generateToken(login, new HashMap());
}
public String generateToken(@NotNull String login, @NotNull HashMap extraClaims) {
return Jwts.builder()
.setSubject(login)
.setClaims(extraClaims)
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + tokenValidity * 1000))
.signWith(key)
.compact();
}
}
Код: Выделить всё
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@FieldDefaults(level = AccessLevel.PRIVATE)
public class JWTServiceTest {
@Autowired
JWTService jwtService;
@Test
public void whenGivenTestLoginAndJwtGenerated_ThenExtractTestUsername(){
String jwt = jwtService.generateToken("test");
assertEquals("test", jwtService.getLogin(jwt));
}
}
Код: Выделить всё
expected: but was:
Expected :test
Actual :null
Подробнее здесь: https://stackoverflow.com/questions/763 ... jwt-claims