2016-10-03 35 views
1

我是Express会话的新手,希望能够使用快速会话传递变量时获得一些帮助。在Express中的会话中传递变量信息

基本上我使用护照来允许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返回 '未定义':

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); 
    }); 
数据