Метод getSubject() возвращает значение null при попытке извлечь из утверждений JWTJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Метод getSubject() возвращает значение null при попытке извлечь из утверждений JWT

Сообщение Anonymous »

Когда я создаю строку токена JWT и пытаюсь извлечь логин (тему), метод getLogin() возвращает значение null. getLogin() просто оборачивает Claims.getSubject().
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();
}
}
JWTServiceTest.java

Код: Выделить всё

@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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»