Экспресс JS 4: экспортированные маршруты и сеанс

#node.js #session #routes #express-4

#node.js #сессия #маршруты #экспресс-4

Вопрос:

я совсем новичок в node, и я работаю над этой проблемой уже несколько часов, но мне не удается найти решение: / Возможно, вы сможете мне помочь 🙂

Я экспортировал свои маршруты из приложения в routes.js . Там у меня есть СООБЩЕНИЕ для процесса входа в систему. При входе в систему я хочу передать идентификатор пользователя из банка данных в сеанс для последующего использования (например, socket io). Как я должен это построить? Я пробовал несколько настроек, но, похоже, я этого не понимаю.

app.js

 var cookieParser = require('cookie-parser');
var session = require('express-session');
var sessionStore = new session.MemoryStore();
app.use(cookieParser('lts session'));
app.use(session({ secret: 'lts session', cookie: { maxAge: 600000 }, store : sessionStore}));
var router = require('./modules/routes.js');
app.use(router);
 

routes.js

 router.post('/', function(req, res) {
    ....
    req.session.name =  admins[id].name;
    req.session.userId = id;
    ...
};
 

Позже я управляю своим сеансом, регистрируя sessionStore.

Комментарии:

1. Это может помочь будущим читателям, если вы расскажете, какие «настройки» вы пробовали и как они не решают вашу проблему

2. Вы смотрели на express-session ?

3. Я использую экспресс-сессию. Моя проблема в том, что эти переменные req.session не сохраняются. Прямо сейчас я использую app.post и т. Д. Вместо router.post …. по-прежнему нет прогресса :/

Ответ №1:

Если вы манипулируете своими переменными сеанса, просто используйте:

 req.session.save()
 

Это сэкономит ваши сеансовые манипуляции.
Пример:

 router.post('/', function(req, res) {
  ....
  req.session.name =  admins[id].name;
  req.session.userId = id;
  req.session.save()
  ...
};