NodeJs路由中间件错误

时间:2016-02-08 13:15:45

标签: javascript node.js express

我正在尝试实现一个中间件,它将在服务器发送页面之前检查用户是否经过身份验证。虽然看起来这样做的过程很简单,但是节点会抛出一个错误,上面写着“在发送之后无法设置标题”。

我的路由器的代码是:

module.exports = function(app) {
    app.get('/', checkAuth, require('./myAuthenticatedPage').get);
    app.get('/login', require('./myLoginPage').get);
};

myAuthenticatedPage.js:

exports.get = function(req, res) {
    res.render('index');
};

myLoginPage.js:

exports.get = function(req, res) {
    res.render('login');
};

checkAuth.js:

module.exports = function (req, res, next) {
    if(!req.session.user) {
        res.redirect('/login');
    }
    next();
}

对此的任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

如果您未经过身份验证,则会重定向用户,然后尝试呈现索引页面。这导致http标头被发送两次,因此错误"在发送标题后不能设置标题"。

在checkAuth.js中尝试:

module.exports = function (req, res, next) {
     if(!req.session.user) {
         res.redirect('/login');
     } else {
       next();
     }
}