NodeJs 路由中间件错误

NodeJs routing middleware error

本文关键字:错误 中间件 路由 NodeJs      更新时间:2023-09-26

我正在尝试实现一个中间件,该中间件将在服务器交付页面之前检查用户是否经过身份验证。尽管看起来这样做的过程很简单,但节点抛出了一个错误,指出"发送后无法设置标头"。

我的路由器代码是:

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

我的身份验证页面.js:

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

我的登录页面.js:

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

检查身份验证.js:

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

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

谢谢

如果未通过身份验证,则将重定向用户,然后尝试呈现索引页。这会导致 http 标头发送两次,因此出现错误"发送后无法设置标头"。

在检查身份验证中.js请尝试:

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