Как загрузить сеанс по идентификатору пользователя, используя node.js/express/passport/redis?
-
21-12-2019 - |
Вопрос
У меня есть приложение, которое использует Redis в качестве хранилища сеансов, паспорт для аутентификации и все остальное поверх Express.
Когда пользователь входит в систему, объект, хранящийся в кеше, имеет структуру, подобную этой:
{
cookie : {cookie info, expiration, etc},
passport : { user : 'userid' }
}
Мой вопрос:Есть ли простой способ загрузить этот сеанс (или идентификатор сеанса) внутри приложения node.js, указав только поле «userid»?(например. loadSession(userid)
, где loadSession
возвращает идентификатор сеанса или сам сеанс).
Предпочтительна собственная альтернатива Passport/Express/Connect-Redis.
Мое намерение состоит в том, чтобы сделать недействительным определенный сеанс в данный момент, не требуя от пользователя выполнения HTTP-запроса к моему приложению, т.е.без req.session
.
Заранее спасибо.
Решение
Как упоминалось в комментариях, если userid
это все, что у вас есть, вам нужно будет добавить node-redis
модуль и найдите запись с этим userid
- это невозможно сделать с connect-redis
в одиночку, поскольку этот модуль предназначен ТОЛЬКО для обработки сеансов.