使用moment.toDate()时,Express 4.13.4中将忽略Cookie失效日期

时间:2016-04-27 19:34:19

标签: javascript node.js express cookies

我试图设置一个特定有效期为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,我唯一能找到的就是this,它告诉OP使用req.session.cookie,这似乎不对,因为你应该设置一个cookie回应客户而非会话。

1 个答案:

答案 0 :(得分:1)

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

以下代码修复了错误:

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