Встречается на собеседованиях • сегодня

Как обеспечить безопасность управления сессиями через 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 токенов при необходимости
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы