Как сохранить информацию об идентификаторе пользователя, используя Everyauth и Nodejs
Everyauth.everymodule.findUserById вызывается с параметром id, который EveryAuth получает из req.session. Затем его можно использовать для загрузки информации о пользователе, которая передается в req.user
На локальном хосте при перезапуске сервера узла app.js сеанс очищается.
То, что я хотел бы сделать, это установить cookie, который содержит идентификатор пользователя, который я могу затем передать каждому пользователю, чтобы при перезапуске сервера он знал идентификатор, и ImoMudule.findUserBy Id мог делать свое дело.
Я использую expressjs и обнаружил, что и connect-mongodb, и cookie-сессии не работают. Итак, каков будет предложенный способ приблизиться к этому?
Другими словами, есть ли способ предварительного заполнения каждого пользователя информацией о пользователе?
1 ответ
Я думаю, вам нужно настроить постоянное хранилище сеансов за пределами expressjs. Поскольку сеансы по умолчанию в expressjs хранятся в памяти, они теряются при перезапуске сервера. Я закончил тем, что пошел с connect-redis
над connect-mongo
, хотя я использую MongoDb для моей базы данных. Я хотел, чтобы данные сеанса хранились отдельно от базы данных. Я не уверен, если это было необходимо, но это было очень просто настроить.
Кроме того, пока мы обсуждаем эту тему, вот несколько других препятствий, с которыми я столкнулся во время сессий:
- Убедитесь, что время сервера установлено правильно, иначе сеансы могут истечь преждевременно.
- Одна вещь, которая поймала меня во время разработки, была результатом того факта, что сеанс снят по отпечатку пальца строкой пользовательского агента, предоставленной браузером. Я обнаружил, что у меня включен плагин для Firefox ( FirePHP, расширение Firebug), который изменял строку моего User Agent после первого запроса. Это приводило к тому, что сессии действовали так, как будто они действительны только до закрытия браузера. Мне понадобилось несколько дней, чтобы отследить это.
Надеюсь это поможет.