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

В чем разница между JWT и сессией

JWT (JSON Web Token) — это токен, содержащий данные в закодированном виде (обычно в Base64) и подпись для проверки подлинности. Он хранится на клиенте (например, в localStorage или куках) и отправляется с каждым запросом. Не требует хранения состояния на сервере.

Сессия — это механизм, при котором сервер хранит данные пользователя (например, в памяти или БД). Клиент получает только идентификатор сессии (обычно в куке), а сервер проверяет его при каждом запросе.

Основные отличия:

  • Хранение: JWT — клиент, сессия — сервер.
  • Масштабируемость: JWT проще масштабировать (stateless), сессии требуют синхронизации (stateful).
  • Отзыв: JWT сложнее отозвать (нужны черные списки или короткий TTL), сессию можно удалить сразу.
  • Безопасность: JWT уязвим к XSS (если в localStorage), сессия — к CSRF (но защищается токенами).
java
// Пример JWT (используя библиотеку jjwt)
String jwt = Jwts.builder()
    .setSubject("user123")
    .signWith(SignatureAlgorithm.HS256, "secret")
    .compact();

// Пример сессии (в сервлете)
HttpSession session = request.getSession();
session.setAttribute("user", "user123");
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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