node.js - 如何使用 Express-Session 强制删除 session ID Cookie?

标签 node.js session express cookies express-session

我正在使用express-session模块来设置具有过期期限的 session 。过了这个期限,当页面刷新时,cookie 将被删除。但是,比如当用户注销时,我想强制删除cookie。我已经使用 req.session.destroy 成功销毁了 session 。

我尝试过使用:

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

req.session.destroy 内, 不过,如果我在浏览器中查看 cookie 详细信息,我会看到内容设置为空,并且过期日期设置为 1970 年 1 月 1 日星期四 01:00:00, 尽管 cookie 不会自行删除。我还在 session 存储配置中设置了 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.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);
})

关于node.js - 如何使用 Express-Session 强制删除 session ID Cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46123018/

相关文章:

node.js - 后端如何结合react-router和passport有效保护路由

node.js - 类型错误 : Cannot read property 'showMessageBox' of undefined electron in node js

Android 在连接到 Socket 时出错

node.js - child_process.spawn 参数中带有括号

node.js - 不能将 $match 与 mongoose 和聚合框架一起使用

node.js - 数据大小限制。错误: Received message larger than max

session - Echo session 中间件不保存

javascript - Express:模板引擎 (Pug) 调用的样式/脚本未加载

python - 将 session 数据从 Flask 传递到 WTForms

javascript - facebook无限 session key javascript