Почти в каждом приложении есть эндпоинт логаута. И тут кроется коварная ловушка.
Фронтенд удаляет JWT, как только юзер жмёт «Выйти». Но правда ли он вышел? По факту — не всегда.
Задумайся над сценариями:
• токен скопировали до выхода
• срок действия JWT ещё не истёк
• другое устройство продолжает юзать тот же токен
• бэкенд по-прежнему спокойно принимает этот JWT
В этом и вся боль stateless-подхода: сервер не хранит состояние сессии, поэтому «удалил токен на клиенте» ≠ «завершил сессию».
Рабочие приёмы:
короткий TTL у access-токена + refresh, blacklist отозванных JWT в Redis, привязка токена к устройству.
А как ты реализуешь честный логаут на stateless JWT?
#JWT #backend #security
Фронтенд удаляет JWT, как только юзер жмёт «Выйти». Но правда ли он вышел? По факту — не всегда.
Задумайся над сценариями:
• токен скопировали до выхода
• срок действия JWT ещё не истёк
• другое устройство продолжает юзать тот же токен
• бэкенд по-прежнему спокойно принимает этот JWT
В этом и вся боль stateless-подхода: сервер не хранит состояние сессии, поэтому «удалил токен на клиенте» ≠ «завершил сессию».
Рабочие приёмы:
короткий TTL у access-токена + refresh, blacklist отозванных JWT в Redis, привязка токена к устройству.
А как ты реализуешь честный логаут на stateless JWT?
#JWT #backend #security