javascript - 如果 session 不可用则重定向 node.js

标签 javascript mysql node.js

我正在尝试为我的路由编写代码,如果 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/

相关文章:

node.js - Node.js 上的 rxjs WebSocket 自动重新连接

javascript - 如何使用 Seq 将变量传递到下一个 .seq?

javascript - AngularJS:基本的错误处理

javascript - 当用户在文本框中键入指定字符时显示建议

javascript - 单击应用程序 .on 附加了太多事件

MySQL偶尔失败

node.js - Winston Logger - NodeJs 调试控制台日志未显示在 VSCode 中

javascript:将对象添加到对象

mysql:显示警告宣布的截断或修改的数据

mysql - 如何将表内的属性引用到同一表内新行内的值