#spring-boot #spring-security #jwt
Вопрос:
По каждому запросу я выполняю следующее (в пакете io.jsonwebtoken):
Jwts.parser().setSigningKey(secret).parseClaimsJws(token);
Могу ли я создать и сохранить поле экземпляра и повторно использовать его для всех запросов?
JwtParser jp = Jwts.parser().setSigningKey(secret);
public Claims getAllClaimsFromToken(String token) {
Jws<Claims> c = jp.parseClaimsJws(token);
return c.getBody();
}
Будет ли метод getAllClaimsFromToken потокобезопасным, если я это сделаю?
Ответ №1:
Jwts.parser()
теперь он устарел. Пожалуйста, замените его на Jwts.parserBuilder()
то, что возвращает a JwtParserBuilder
. Экземпляры синтаксических анализаторов, возвращенные из Jwts.parserBuilder().....build()
, являются неизменяемыми ( ImmutableJwtParser
), что означает, что вы можете безопасно использовать их в многопоточной среде.
JwtParser immutableJwtParser = Jwts.parserBuilder().setSigningKey(secret).build();
public Claims getAllClaimsFromToken(String token) {
Jws<Claims> c = immutableJwtParser.parseClaimsJws(token);
return c.getBody();
}