Reputation: 188
I am setting my session variable to true whenever username and password is correct in my post function.But when I am unable to retrieve my session in my responses function. when I console it, it says undefined.
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;
Upvotes: 0
Views: 97
Reputation: 8802
You haven't setup your express session properly. Just using the below line is not enough.
var session = require('express-session');
The express app needs to be made to use this session.
var session = require('express-session')
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}))
Do the above in your app.js/server.js
Upvotes: 1