передача информации о переменной в сеансе в Express

#node.js #express

#node.js #экспресс

Вопрос:

Я новичок в экспресс-сеансах и надеялся, что смогу получить некоторую помощь в передаче переменных с помощью express-session.

По сути, я использую passport для разрешения входа в GitHub, и я могу получить информацию о пользователе с помощью req.user . Когда пользователь входит в систему через GitHub, я хотел перенаправить пользователя на страницу входа, которая попросит пользователя проверить информацию перед созданием учетной записи, или, если учетная запись уже существует, отобразить страницу приветствия.

 let app = express();
app.use(session({secret: "blahblahblah"}));

console.log('github authenticated');
let sess = req.session;
//I want to pass the req.user(returned from GitHub) to a variable sess.user
sess.user = req.user; 
console.log(sess.user); //shows correct info    
res.redirect('/user/login');

module.exports = app;
  

Однако, когда я пытаюсь получить доступ к req.session с моего маршрута, он возвращает ‘undefined’:

 let session = require('express-session');
let app = express();

app.use(session({secret: "blahblahblah"}));
app.use(router);

router.get('/login', function(req, res, next) {
    let sess = req.session;
    console.log(sess.user); //undefined
    //would check the database
    //if user doesn't already exists pre-populate fields
    //render appropriate page
  });
  

Ответ №1:

Вы должны передать данные в самом объекте запроса

 let sess = req.session;
sess.user = req.user;
req.mysess=sess.user //pass like this


router.get('/login', function(req, res, next) {
let sess = req.mysess;
console.log(sess);
  });