我有一个简单的登录注销系统,如下所示:
exports.login = function(req, res) {
var email = req.body.email;
var password = req.body.password;
db.users.find({email: email, password: password}, function(err, users) {
if (users.length === 0) {
res.render('home', {
title: siteTitle,
loginError: 'true',
errorMsg: 'Wrong login credentials'
});
} else {
req.session.username = email;
res.redirect('/main');
}
});
};
exports.logout = function(req, res) {
// delete the session variable
delete req.session.username;
// redirect user to homepage
res.redirect('/');
};
以下是绑定:
app.get('/', store.home);
app.post('/', store.home);
app.get('/main', store.main);
app.post('/main', store.main);
app.post('/login', store.login);
app.get('/login', store.login);
app.get('/logout', store.logout);
app.post('/logout', store.logout);
所以我有这些页面:
/
(仅在用户未登录时才会转到此处,否则会重定向到/main
)
/login
(立即重定向到/main
或/
)
/main
(仅在用户登录时才会显示此处,否则会重定向到/
)。
用例:
转到/
。
登录
您现在被重定向到/main
。
点击浏览器后退按钮。
您现在位于/
,就好像您从未登录过一样!为什么?
答案 0 :(得分:0)
您需要使用会话来确定用户的状态,然后相应地重定向他。
答案 1 :(得分:0)
这是浏览器在历史记录中缓存页面时的一般问题。
有几种方法可以解决这个问题。它详细介绍了here。