我在登录后创建了一个登录cookie,但是当我尝试更新其中的数据时,它给了我一个错误
Can't set headers after they are sent.
我的代码如下。
/* Logout to main user. */ /* Not Working */
router.get('/logoutToMain', mustBe.authorized('supportuser'), function (req, res) {
var loginSealed = req.cookies[req.ApplicationCookies.LoginCookie];
if (loginSealed != undefined) {
iron.unseal(loginSealed, req.Security.CookiePassword, iron.defaults, function (err, unsealed) {
if (!err) {
unsealed.SupportUser = null;
iron.seal(unsealed, req.Security.CookiePassword, iron.defaults, function (err, sealed) {
if (!err) {
res.cookie(req.ApplicationCookies.LoginCookie, sealed, { expires: new Date(Date.now() + 432000), httpOnly: true, ephemeral: true });
}
});
//res.cookie(req.ApplicationCookies.LoginCookie, unsealed, { expires: new Date(Date.now() - 1000), httpOnly: true });
}
});
}
res.redirect('/');
});
虽然当我删除此cookie时,这是有效的。 (下面的代码)
/* Logout action. */ /* Working */
router.get('/logout', mustBe.authenticated(), function (req, res) {
var LoginCookie = req.cookies[req.ApplicationCookies.LoginCookie];
if (LoginCookie != undefined) {
res.cookie(req.ApplicationCookies.LoginCookie, null, { expires: new Date(Date.now() - 1000), httpOnly: true });
}
res.redirect('/');
});
下面的代码是为登录用户创建cookie
var LoggedinEmployee = {
EmployeeID : recordset[0][0].EmployeeId,
EmployerID : recordset[0][0].EmployerId,
EmployerName : recordset[0][0].EmployerName,
AccountName : Employer.AccountName,
EmpLevel : recordset[0][0].EmpLevel,
EmployeeName : recordset[0][0].EmployeeName,
CorpId: recordset[0][0].CorpID,
Login: user.Login,
Password: user.Password,
SupportUser: null
};
iron.seal(LoggedinEmployee, req.Security.CookiePassword, iron.defaults, function (err, sealed) {
if (!err) {
res.cookie(req.ApplicationCookies.LoginCookie, sealed, { expires: new Date(Date.now() + 432000), httpOnly: true, ephemeral: true });
req.ActionOutput.Status = req.ActionStatus.Success;
req.ActionOutput.Message = 'Logged In. Redirecting to dashboard...';
res.send(JSON.stringify(req.ActionOutput));
} else {
req.ActionOutput.Status = req.ActionStatus.Error;
req.ActionOutput.Message = 'System Error';
res.send(JSON.stringify(req.ActionOutput));
}
});