使用moment.toDate()时,Express 4.13.4中Cookie的有效期限被忽略

我正在尝试设置一个特定的有效期为3个月的cookie。 我可以把cookie设置好,但是为它设置的失效不起作用。

我用momentJS来创build一个我想要的date对象。 从控制台输出正确的时间,但是cookie没有正确的值,它的价值将在几分钟内而不是从date起的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和唯一我能find的是这告诉OP使用req.session.cookie这似乎不正确,因为你应该设置一个cookie响应客户端,而不是在一个会话。

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

以下代码修复了这个bug:

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