我试图设置一个特定有效期为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回应客户而非会话。
答案 0 :(得分:1)
我通过一些试验和错误发现,由moment.toDate()创建的日期对象可能是Express未接受的有效Date对象。
以下代码修复了错误:
var cookieDate = new Date(moment().add(6, 'months').toDate());
res.cookie('username', user.username, { expires: cookieDate });