TGViewer
Программирование {BookFlow} Программирование {BookFlow} @bookflow · 15.6K subscribers
Post #4203 1.1K
В чём разница между аутентификацией на сессиях и JWT?

Многие разработчики не знают об этом различии, хотя оно критически важно.

Большинство веб-приложений используют один из двух подходов к аутентификации:
сессии (где состояние хранится на сервере) или JWT (где состояние передаётся вместе с клиентом).

1. Аутентификация на основе сессий

Когда пользователь входит в систему, бэкенд генерирует случайный session ID, сохраняет его в кэше или базе данных и устанавливает этот ID как HttpOnly cookie в браузере. При каждом запросе браузер отправляет cookie, сервер находит соответствующую запись и восстанавливает пользовательский контекст.

Такой подход:
• сохраняет чувствительные данные на сервере;
• позволяет мгновенно завершить сессию удалением записи.

Преимущества сессий:
• 🔹 Мгновенная деактивация доступа (“выйти отовсюду”) - одной строкой: просто удалить запись из Redis или SQL.
• 🔹 Секреты никогда не покидают сервер, что снижает риск утечки.
• 🔹 Отлично подходит для малых и средних систем, где кэш - не узкое место.

Но: при горизонтальном масштабировании понадобятся «липкие» сессии или реплицированный кэш, что добавляет задержки и усложняет инфраструктуру.

2. Аутентификация с помощью JWT (JSON Web Token)

После входа сервер подписывает JWT, содержащий:
• заголовок (например, alg, typ),
• полезную нагрузку (claims - sub, role и т.д.),
• цифровую подпись.

JWT - это просто base64-строка (не шифрованная): любой может прочитать данные, но подделать их может только владелец секрета. Сервер не хранит состояние - любой узел может локально проверить подпись и доверять данным.

Преимущества JWT:
• 🔸 Беспамятный (stateless): не требует общего хранилища, подходит для микросервисов и edge-нод.
• 🔸 Удобен для SPA и мобильных приложений, напрямую работающих с бэкендами.
• 🔸 Лёгкий: помещается в заголовок Authorization или cookie.

Минус: JWT нельзя отозвать после выдачи - он действителен до истечения срока, так что «экстренный выход» или блокировка аккаунта требуют дополнительной логики.

Вывод:
• Если главное - возможность немедленно отозвать доступ, выбирай сессии.
• Если нужна масштабируемость без состояния, выбирай JWT, но помни, что токены нельзя «забрать обратно» после их выдачи.

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
  • 👍 2
  • 🔥 2
  • 👌 1
More from @bookflow
  1. Oct 2, 2026xdg-ninja — это полезный инструмент для программистов и пользователей Linux, который помог…
  2. Sep 29, 2026🔐 Путеводитель по аутентификации: от Cookies до OAuth 2.0 Разбираться в способах входа по…
  3. Sep 24, 2026Работа с HTTP API (на практике) Подготовил мини-серию из пары десятков практических задани…
  4. Sep 22, 2026🔎 Kor — найти забытые ресурсы в Kubernetes После экспериментов и релизов в кластере остаю…
  5. Sep 20, 2026Детальный обзор полей Галуа "Попросите Якоби или Гаусса публично высказать своё мнение — н…
  6. Sep 17, 2026🥑 Apache Guacamole Это шлюз для удалённого рабочего стола, не требующий установки клиентс…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →