我正在尝试实现一个中间件,它将在服务器发送页面之前检查用户是否经过身份验证。虽然看起来这样做的过程很简单,但是节点会抛出一个错误,上面写着“在发送之后无法设置标题”。
我的路由器的代码是:
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();
}
对此的任何帮助将不胜感激。
由于
答案 0 :(得分:0)
如果您未经过身份验证,则会重定向用户,然后尝试呈现索引页面。这导致http标头被发送两次,因此错误"在发送标题后不能设置标题"。
在checkAuth.js中尝试:
module.exports = function (req, res, next) {
if(!req.session.user) {
res.redirect('/login');
} else {
next();
}
}