更新cookie在带有express的nodejs中不起作用

时间:2016-04-11 06:46:20

标签: javascript node.js express cookies

我在登录后创建了一个登录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));
    }
});

0 个答案:

没有答案
相关问题