使用 moment.toDate() 时,在 Express 4.13.4 中忽略了 Cookie 到期日期

Cookie expiry date being ignored in Express 4.13.4 when using moment.toDate()

本文关键字:Cookie 日期 使用 toDate Express moment      更新时间:2023-09-26

>我正在尝试设置一个特定到期日期为 3 个月的 cookie。我可以将 cookie 设置得很好,但为其设置的到期时间不起作用。

我已经使用 momentJS 在我想要的时间创建了一个日期对象。正确的时间从控制台输出,但 cookie 没有正确的值,它的值是在几分钟后过期,而不是从日期起的 3 个月。

// Create the date the cookies will expire on
var cookieDate = moment().add(6, 'months').toDate();
console.log(cookieDate);
res.cookie('username', user.username, { expires: cookieDate });

我浏览了文档,它只是要求将 Date 对象传递给它。

我还在stackoverflow上环顾四周,我唯一能找到的是它告诉OP使用req.session.cookie,这似乎不对,因为您应该在响应客户端而不是在会话中设置cookie。

通过一些试验和错误,我发现由 moment.toDate() 创建的日期对象可能是一个有效的 Date 对象,它不被 Express 接受。

以下代码修复了该错误:

var cookieDate = new Date(moment().add(6, 'months').toDate());
res.cookie('username', user.username, { expires: cookieDate });