Node.js 如何使用express session强制删除会话ID cookie?

Node.js 如何使用express session强制删除会话ID cookie?,node.js,session,express,cookies,express-session,Node.js,Session,Express,Cookies,Express Session,我正在使用express会话模块设置一个具有过期期限的会话。在此期限之后,刷新页面时将删除cookie。但是,例如当用户注销时,我希望强制删除cookie。我已经使用req.session.destroy成功销毁了会话。 我尝试使用: res.clearCookie('SID').status(200).send('Page'); 在req.session.destroy内部,尽管,如果我在浏览器中查看cookie详细信息,我会看到内容被设置为nothing,过期日期被设置为1970年1月1日

我正在使用express会话模块设置一个具有过期期限的会话。在此期限之后,刷新页面时将删除cookie。但是,例如当用户注销时,我希望强制删除cookie。我已经使用
req.session.destroy成功销毁了会话。

我尝试使用:

res.clearCookie('SID').status(200).send('Page');
req.session.destroy内部,
尽管,如果我在浏览器中查看cookie详细信息,我会看到内容被设置为nothing,过期日期被设置为
1970年1月1日星期四01:00:00,
尽管cookie不会自行删除。我还在会话存储配置中设置了
unset:'destroy'
,但这并没有解决我的问题

中间件:

app.use(session({
  store: new MemoryStore({
    checkPeriod: 86400000
  }),
  cookie: {
    secure: true,
    maxAge: 10000
  },
  secret: secret,
  resave: false,
  saveUninitialized: false,
  name: 'SID',
  unset: 'destroy'
}));

提前感谢。

您需要强制设置
req.session.cookie.expires
req.session.cookie.maxAge
的值

以这段代码为例

var timeInMillseconds = 3600000;
req.session.cookie.expires = new Date(Date.now() + timeInMillseconds);
req.session.cookie.maxAge = timeInMillseconds;
现在就使用这个中间件

app.use(session({
  secret: 'mySecre',
  saveUninitialized: true
}))

app.get('/', function(req, res){
   req.session.myUser = "myUser";
   req.session.cookie.expires = new Date(Date.now() + 36000000);
   req.session.cookie.myDog = "myDog";
   res.status(201).send(req.session); //you can also use 200
   console.log(req.session);
})

您需要强制设置
req.session.cookie.expires
req.session.cookie.maxAge
的值

以这段代码为例

var timeInMillseconds = 3600000;
req.session.cookie.expires = new Date(Date.now() + timeInMillseconds);
req.session.cookie.maxAge = timeInMillseconds;
现在就使用这个中间件

app.use(session({
  secret: 'mySecre',
  saveUninitialized: true
}))

app.get('/', function(req, res){
   req.session.myUser = "myUser";
   req.session.cookie.expires = new Date(Date.now() + 36000000);
   req.session.cookie.myDog = "myDog";
   res.status(201).send(req.session); //you can also use 200
   console.log(req.session);
})

嗨,谢谢你的帮助。I did req.session.cookie.expires=新日期(0);但这似乎并没有在cookie上设置过期日期,它只是保持在配置中的默认设置。使用
newdate(date.now()+hour)
尝试上面的确切代码,客户机是否使用
req.session.save(function(err){})
来保存它@马修斯没有定义。我也不是这样设置会话,在express会话中,我是这样设置的:req.session.user=value;抱歉,这仍然不起作用。我正在使用req.session.cookie.expires=新日期(Date.now()+3600000);它不是req.session.user.cookie.expires,是吗?另外,当我查看cookie信息时,不能正确设置过期时间。过期时间是我在express session配置中设置的,而不是提前一小时。您好,谢谢您的帮助。I did req.session.cookie.expires=新日期(0);但这似乎并没有在cookie上设置过期日期,它只是保持在配置中的默认设置。使用
newdate(date.now()+hour)
尝试上面的确切代码,客户机是否使用
req.session.save(function(err){})
来保存它@马修斯没有定义。我也不是这样设置会话,在express会话中,我是这样设置的:req.session.user=value;抱歉,这仍然不起作用。我正在使用req.session.cookie.expires=新日期(Date.now()+3600000);它不是req.session.user.cookie.expires,是吗?另外,当我查看cookie信息时,不能正确设置过期时间。过期时间是我在express session配置中设置的,而不是提前一小时。