我想做的是
- >使用一个发布到'/ check_user'的逻辑表单
- > check_user具有生成会话的逻辑,它可以完美地创建会话
- >然后它重定向到'/ chat',受到verify()函数
的限制- >如果持续存在,验证会检查会话(在这一点上始终没有为某些原因定义)
- > check_user会创建会话并且它会在那里继续存在,但是当重定向到“/ chat”并点击验证时,会话就会丢失。
这是我正在使用的代码片段,我没有使用任何模板引擎,而是纯HTML文件。任何帮助都非常感谢。谢谢!
app.use(express.static(__dirname + '/public'));
app.get('/login', function (req, res) {
res.sendfile(__dirname + '/public/index.html');
});
app.get('/chat', verify, function(req, res){
res.sendfile(__dirname + '/public/chat.html');
});
// when login form is posted to check_user, handle the username and passwords validation.
app.post('/check_user', function(req, res){
req.session.regenerate(function(){
req.session.user = "test";
//debugging codes debug code 1
console.log("3");
console.log(req.session.user);
//End debugging codes
res.redirect('/chat');
});
});
功能验证(req,res,next){
console.log(req.session.user);
if (req.session.user) {
console.log("1");//debug code 2
next();
} else {
console.log("2");//debug code 3
req.session.error = 'Access denied!';
res.redirect('/login');
}
};
答案 0 :(得分:1)
固定!它。问题是我在ajax提交后使用res.render。我在ajax提交上使用了window.location并且它有效。
我发现的另一件事是,
删除此闭包使我的会话在整个应用程序中保持不变
req.session.regenerate(函数(){
});