如何强制删除带有快速会话的会话ID cookie?

时间:2017-09-08 18:59:59

标签: node.js session express cookies express-session

我使用快速会话模块设置过期年龄的会话。在此年龄之后,刷新页面时将删除cookie。但是,例如当用户注销时,我想强制删除cookie。我已使用req.session.destroy.

成功销毁了会话

我试图使用:

res.clearCookie('SID').status(200).send('Page');

req.session.destroy,内部但是,如果我在浏览器中查看cookie详细信息,我会看到内容设置为空,并且过期日期设置为Thursday, 1 January 1970 at 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'
}));

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要强制设置req.session.cookie.expiresreq.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);
})