#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);
});