【发布时间】:2018-11-10 15:20:28
【问题描述】:
我最近使用bcrypt 向我的网站添加了身份验证。在进行身份验证时,bcrypt 会比较密码。
如果密码匹配,req.session 被设置为 cookie 并使用connect-mongodb-session 写入mongodb。但是当重定向到/events 应用程序崩溃并给我一个错误:Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
我正在使用把手来呈现我的 html 代码
认证路径:
Router.get('/', (req, res) => {
res.status(200).render('login', {pageTitle: 'Log In'});
})
Router.post('/', (req, res) => {
//Authenticate user
const username = req.body.username;
const pass = req.body.password;
User.findOne({username: username}).then((user) => {
if (user) {
//Validate password
console.log(user);
console.log(user.password);
bcrypt.compare(pass, user.password).then((doMatch) => {
console.log(doMatch);
//Check if password match
if (doMatch) {
//To use session use express-session package
req.session.isLoggedIn = true;
req.session.user = user;
req.session.save((err) => {
console.log(err);
res.redirect('/');
});
return res.redirect('/events');
} else {
res.redirect('/');
}
}).catch((err) => {
console.log(err);
});
} else {
return res.redirect('/');
}
}).catch((err) => {
console.log(err);
});
});
活动路线:
Router.get('/events', (req, res) => {
if (req.session.isLoggedIn) {
Event.find({}, (err, events) => {
res.render('events', {
prods: events,
pageTitle: 'Events',
path: '/events',
hasProducts: events.length > 0
});
}).catch((err) => {
console.log(err);
});
} else {
console.log('User not authenticated');
res.status(401).send('User not authenticated');
}
});
【问题讨论】:
标签: javascript node.js express