我正在尝试为我的路由编写代码,如果 session.user_id 未定义,则重定向回主页。出于某种原因,重定向没有执行并且 mysql 条件被触发并且它使服务器崩溃,因为 session.user_id 是未定义的并且它无法在没有该数据的情况下加载游戏。
有没有办法在所有路由上使用通用重定向,如果 session 不可用则重定向回登录?
router.get('/game', function(req,res) {
console.log(req.session.user_id);
if (req.session.user_id === "undefined") {
res.redirect('/');
}else {
var condition = 'userId = ' + req.session.user_id;
projectX.allGameData(condition, function(data){
var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin}
res.render('game', hbsObject);
});
};
});
最佳答案
您应该使用:
if (req.session.user_id === undefined)
或
if (typeof req.session.user_id === "undefined")
除此之外,通常最好有一个检查用户 session 的中间件功能。这样,您只需在所有路由中插入对此中间件的调用,这需要用户登录:
router.get('/game', checkUserSession, function(req,res) {
// Your code here
});
function checkUserSession( req, res, next )
{
if( req.session.user_id )
{
next();
}
else
{
res.redirect('/homepage');
}
}//checkUserSession()
关于javascript - 如果 session 不可用则重定向 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38186156/