设置后无法检索会话变量

时间:2017-04-10 05:03:15

标签: node.js express

每当我的帖子函数中的用户名和密码都正确时,我将会话变量设置为true。但是当我无法在响应函数中检索我的会话时。当我安慰它时,它说未定义。

var session = require('express-session')
var userSchema = new Schema({
  name: String,
  age: Number,
  gender: String,
});
var users = mongoose.model('users', userSchema)
/* GET home page. */
router.post('/login', function(req, res, next) {
var username = req.body.username;
var password = req.body.password;
if(username == "tina" && password == "123456")
{
req.session.login = true;
console.log("session1:" + req.session.login);
setTimeout(function(){ res.redirect("/responses"); }, 3000);
}
else{
res.redirect("/loginerror");
}

});


router.get('/responses', function(req, res, next) {
//if(req.session.login==true){
console.log("session2:" + req.session.login);
users.find({}, function(err,users) {
  if (err) {
  console.log( err);
  throw err;
}
 else{
 console.log("session3:" + req.session.login);
 if(req.session.login){
 console.log("111");
   res.render('responses', { title: 'responses',users:users });
}
 else{
 res.redirect("/loginerror");
}
  }
})
//}


});

router.get('/loginerror', function(req, res, next) {
  res.render('loginerror', { title: 'loginerror' });

});

router.get('/', function(req, res, next) {
  res.render('index', { title: '',users:users });

});

module.exports = router;

1 个答案:

答案 0 :(得分:1)

您尚未正确设置快速会话。 仅使用以下行是不够的。

var session = require('express-session');

需要使用Express应用程序来使用此会话。

var session = require('express-session')

app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))

在app.js / server.js

中执行以上操作