如果会话不可用,则重定向node.js

时间:2016-07-04 13:38:32

标签: javascript mysql node.js

我正在尝试为我的路由编写代码,如果session.user_id未定义,则重定向回主页。由于某种原因,重定向没有执行,并且mysql条件被触发并且它崩溃了服务器,因为session.user_id是未定义的并且它无法加载没有该数据的游戏。

有没有办法在所有路由上使用通用重定向,如果会话不可用,重定向回登录?

                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);

                });

                };

                });

3 个答案:

答案 0 :(得分:1)

我假设值为undefined,而不是"undefined"(这是一个包含单词“undefined ”的字符串):

if (req.session.user_id === undefined) {
  ...
}

答案 1 :(得分:1)

你应该使用: if (req.session.user_id === undefined)

OR if ( typeof req.session.user_id === "undefined")

除此之外,通常还有一个中间件功能可以检查用户会话。这样,您只需在所有路由中插入对此中间件的调用,这需要用户登录:

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()

答案 2 :(得分:0)

-E

添加一个函数来处理Auth检查,然后注入是路由器的中间件。