Мимо Проходящий
хуже - нет мгновенного разлогина. А с кешом - удалил ключ из мапы - разлогинил
мгновенный, это насколько быстро? Если у вас распределённое приложение и один из узлов получает запрос /logout
то как быстро это событие дойдёт до других узлов? Тут вопрос даже не в реализации (сессии/jwt) а в физических ограничениях.
С jwt тоже можно реализовать мгновенный разлогин просто проверкой в базе в таблице отозванных. И тут явное преимущество перед сессиями - сессии надо хранить все, а токены - только отозванные и не протухшие. А в остальном механизм абсолютно одинаков в сессиями - есть центральный сервис, который говорит можно этому пользователю заходить, или нет. И если этот центральный сервис недоступен, то и для сессий и для токенов можно как "не пущать", так и "пущать" (то есть использовать закешированные сессии и закешированный список отозванных токенов)