В настоящее время я проектирую систему входа в систему oauth и столкнулся со следующей проблемой. Я пытаюсь перенаправить пользователей обратно на домашнюю страницу после того, как они вошли в систему и установили данные сеанса, но res.redirect('/')
выдает NodeError: Cannot set headers after they are sent to the client
. Я не могу заставить его работать. Ниже приведен код, вызывающий ошибку:
app.post(
"/auth/openid/return",
passport.authenticate("azuread-openidconnect", {
failureRedirect: "/login"
}),
function(req, res) {
let userProperties = req.user;
new Promise((resolve, reject) => {
MongoClient.connect(url, function(err, db) {
if (err) next(err);
let dbo = db.db("Lektier");
let query = {
oid: req.user.oid
};
dbo.collection("users").findOne(query, function(err, result) {
db.close();
if (result) {
let type = result.type;
resolve(type);
}
});
});
}).then(type => {
req.session.regenerate(function() {
req.session.user = userProperties.upn;
if (type == "teacher") {
req.session.teacheruser = userProperties.upn;
}
let names = userProperties.displayName.toString().split(" ");
req.session.FirstName = names[0];
req.session.LastName = names[1];
res.redirect("/");
});
});
}
);
Буду признателен за помощь в этом вопросе.