сохранить данные в экспресс-сессии: res.render () против res.send () - PullRequest
0 голосов
/ 13 сентября 2018

все. У меня проблема с управлением сеансом.

Это моя конфигурация "экспресс-сессии" (app.js) :

app.use(session({
secret: "I love pizza...",
resave: true,
saveUninitialized: true
}));

Когда пользователь входит в систему, я сохраняю некоторые «атрибуты» в req.session , например, ( controller.js ):

exports.login = function (request, response) {
  request.session.username = 'admin';
  response.render('pages/home', {
        title: "home",
        username: request.session.username
    });
}

Он показывает мне «домашнюю» страницу с «меню» и другими ссылками. Одна ссылка содержит ссылку 'href', которая перенаправляет на страницу ' dashboard ':

<a class="nav-link active d-flex align-items-center nav-link-2" 
 href="/dashboard">
 <span>Dashboard</span>
 </a>

И он маршрутизируется в rout.js :

function sessionChecker (req, res, next) {

if (req.session && req.session.username) {
    next();
} else {
    res.redirect('/login');
}

};

app.get('/dashboard', sessionChecker, home.evaluacion_dash);

Ну, проблема в методе sessionChecker , переменная req.session.username не существует.

С другой стороны, если я заменю response.render на response.send метод, как это:

response.send('login success!!!');

Он показывает мне страницу с текстом: «Войти успешно !!!» и если я напишу (вручную) в адресную строку: 'http://localhost:3000/dashboard', переменная req.session.username существует в sessionChecker метод ....

Любые предложения по настройке в экспресс-сеансе или другой альтернативе, чтобы иметь возможность сохранить 'username' ?

Дополнительная информация: версия узла: 8.9.3, экспресс-версия: 4.13.1, версия экспресс-сессии: 1.15.6

Привет!

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Спасибо @ Shadow , просто добавив "ключ" параметр, он работает !!!

0 голосов
/ 13 сентября 2018

Мое первое мнение об использовании passportjs, который обрабатывает sessionChecker для вас.

Возможно, вам придется изменить resave и saveUninitialized здесь

app.use(session({
  key: 'session_cookie_name',
  secret: 'session_cookie_secret',
  resave: false,
  saveUninitialized: false
}));
...