Должен ли я хранить токены JWT в redis?
Я создаю приложение с помощью ExpressJS, Mongodb (Mogoose). Приложение содержит маршруты, где пользователь должен пройти проверку подлинности перед доступом к нему.
В настоящее время я написал Express middleware, чтобы сделать то же самое. Здесь с помощью токена JWT я делаю запрос mongodb, чтобы проверить, аутентифицирован ли пользователь или нет. но чувствую, что это может поставить ненужную нагрузку запроса на мою базу данных.
должен ли я интегрировать redis для этой конкретной задачи?
делает это улучшит производительность API? или следует продолжать существовать подход в MongoDB?
было бы полезно, если бы я получил больше информации об этом.
2 ответов
TLDR: если вы хотите, чтобы возможность отозвать токен в какой-то момент, да, сохраните его в чем-то быстром, как Redis.
одним из хорошо документированных недостатков использования JWT является то, что нет простого способа отозвать токен, если, например, пользователь должен выйти из системы или токен был скомпрометирован. Отзыв токена означал бы поиск его в некотором хранилище, а затем принятие решения о том, что делать дальше. Поскольку один из пунктов JWT-избегать поездок туда и обратно в БД, хороший компромисс будет хранить его в чем-то менее тяжелым, чем РСУБД. Это идеальная работа для редиса.
вы можете использовать Redis для хранения метки jwt. Redis гораздо удобнее для хранения таких данных. Запрос на редиску не должен сильно влиять на производительность. Вы можете попробовать библиотеку jwt-redis