Date expiration = getExpirationDate(); // implement me
Jwts.builder().setSubject("Joe")
.setExpiration(expiration)
.signWith(SignatureAlgorithm.HS512, key)
.compact();
согласно спецификации JWT, дата будет преобразована в число секунд (не миллисекунд) после эпохи и хранят как JWT претензии exp
. Парсер будет рассматривать это требование и гарантировать, что JWT не истек.
Обратите внимание, что проверки срока действия основаны на системном часовом времени во время разбора. Если машина, сгенерировавшая токен, имеет часы, которые дрейфуют разумно по сравнению с машиной, которая анализирует токен, ваши проверки срока действия могут потерпеть неудачу. В этом случае, вы можете использовать setAllowedClockSkewSeconds
метод JJWT в (на JwtParser/Builder), чтобы позволить некоторой манёвра о различиях между часами (1 до 2 минут должны быть более чем достаточно), например:
Jwts.parser().setAllowedClockSkewSeconds(120)...etc...
если по какой-либо причине, что не может быть достаточно хорошо, вы можете контролировать фактическое разборе часы через:
Jwts.parser().setClock(new MyClock())...etc...
установив Clock
не должно быть необходимым в большинстве случаев, однако (это, как правило, наиболее полезным в тестовых случаях).
Спасибо, действительно прояснил ситуацию. Сегодня утром ты спас меня через несколько часов! – robm