JWT без боли: мгновенно инвалидируем все сессии
В WikiMind мы ушли от классики с блэклистами JWT и сделали per-user secret: у каждого пользователя свой jwt_secret. Один ключ в БД — и все старые токены умирают сразу.

В WikiMind мы ушли от классики с блэклистами JWT и сделали per-user secret: у каждого пользователя свой jwt_secret. Нужно разлогинить везде? Просто меняем один ключ в БД — и все старые токены умирают сразу. O(1) вместо возни со списками, которые со временем пухнут как легаси после “быстрого фикса”.
Как это работает: сначала декодируем токен без проверки подписи, достаём user_uuid, по нему грузим из БД актуальный jwt_secret, и только потом валидируем подпись. Да, звучит как “хак”, но это нормальный паттерн, если не доверять payload до полной проверки.
Для наших 1200+ ежедневных пользователей это не “оптимизация на потом”, а архитектурная база. Особенно сейчас, когда в IT всё чаще говорят про zero trust и быстрый response на компрометацию сессий.