express-session 为每个数据设置单独过期时间
发布于 7 年前 作者 luanwulin 5536 次浏览 来自 问答

cookie可以对每个键值设置单独的过期时间,但是在express-session插件使用中却无法实现这样的需求,所有的session都是存在一个对象中的。有人遇到过么?你怎么解决的,用别的插件么?

8 回复

顶一个,求大神

可以按path设置

来自酷炫的 CNodeMD

@dbit-xia path是设置的cookie保存路径吧?

@luanwulin 大佬有解决方案了吗

有解决方案了吗?

为什么不放到缓存呢?

  • 好吧,最后还是整出来了,不知道是不是你要的需求,我这边是有这个需求的。但是原理只能懂一点点,应该就是touch和set 方法的原理。

  • 我用的是express-session + mongo-connect做的session持久化,初始配置的 cookie 的 maxAge 就是一个小时。 我的一点小理解,过程应该是 server 生成 sessionId, 带 expires 时间,放到cookie里,在发给浏览器。

  • ++需求是++: 只要有请求,就update过期时间,然后需要根据不同的账户标识,做一个session expires time的控制。

  • ++解决是++: 配置resave, rolling 为 true,然后其他配置照旧。然后我在登录的时候判断出是哪个账户表示,直接修改cookie的过期时间 req.session.cookie.expires 这个

req.session.cookie.expires = 60*60*1000*24*12*10; //( 10 years)
  • 这里有个问题是,需要对每一种情况都设置这个expires time, default也需要,不然当你账号注销的时候,cookie是未修改的,或者可以再做多一次处理,不再赘述

express-session可以用,但你要设置session存储方式,因为默认的session存储是memoryStore,所有的数据存在内存中,且不会自动回收。只能用于开发测试,不可用于生产环境。你只要将store改为redis或者Mongodb,redis/mongodb会自己按照你设置的过期时间自行维护session时效。

回到顶部