Встречается на собеседованиях • сегодня
Как обеспечить безопасность управления сессиями через JWT, чтобы пользователь мог закрывать свои сессии
Используйте JWT с коротким сроком жизни (access token) и refresh token. При выходе пользователя инвалидируйте refresh token на сервере (храните в БД/Redis). Пример:
java
// Генерация токенов
String accessToken = Jwts.builder()
.setSubject(username)
.setExpiration(new Date(System.currentTimeMillis() + 15 * 60 * 1000)) // 15 мин
.signWith(SignatureAlgorithm.HS512, secret)
.compact();
String refreshToken = UUID.randomUUID().toString();
// Сохраняем refreshToken в БД с флагом active
// Выход пользователя
public void logout(String refreshToken) {
// В БД помечаем refreshToken как неактивный
refreshTokenRepository.deactivate(refreshToken);
}
// Проверка при refresh
if (!refreshTokenRepository.isActive(refreshToken)) {
throw new SecurityException("Token revoked");
}
text
Дополнительные меры:
- Храните токены в HttpOnly куках
- Используйте CSRF-токены для форм
- Реализуйте blacklist для access токенов при необходимости
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы