Это io.jsonwebtoken.Многопоточный JwtParser?

#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();
}