跳到主要内容
CNode

express老是丢session是怎么回事啊

社区
Jjtyjty99999发布于 13 年前最后回复 9 年前
13129170

就是我nodejs应用中,老是莫名其妙的session就没了(express)

比如req.session.userid 初始化为123456

过阵子req.session.userid变成了undefined..

但是我没权限读写公共redis。后来我跟后端商量了下让他写了个读写session的口子暴露给我。(get set del)

这个丢session是怎么造成的啊? 对于这个问题我这么处理可以么?

查看回复

回复 (13)

Y
yinguangyao#139 年前

请问一下这个问题解决了么

L
linghao2014#1210 年前

express-session 设置的时候不是有个cookie参数么,那就是过期时间,你设大一些就好了。

P
Pana#1113 年前

如果用了cluster的话,就必须把session存到数据库才行(如 redis), 否则内容中的session在多个服务之间是不会共享和同步的.

G
guoxy#1013 年前

其实用node开发可以不用session,直接内对象+http header idI'd 更爽

J
JacksonTian#913 年前

是不是session跨进程了?

J
jtyjty99999#713 年前

@youxiachai @leizongmin @dengqiao 楼上的,我的应用有的时候几十分钟不操作,甚至开一天都不会影响session,有的时候操作几分钟或者啥都不操作,就变成undefined了,根本不是你们说的情况

L
leizongmin#613 年前
引用 xianggp如果是过期了,应该怎么办?@leizongmin ,从新创建session 吗?

Session被“过期”有两种情况:

  • Session ID (存储在Cookie中的)过期了,Session ID过期后,服务器会分配一个新的Session ID给当前客户端,这样的话,原来的Session数据也相当于失效了

  • 用来存储Session的数据库没有对应的数据了(比如Redis中设置了过期时间)

以上任意一种情况都会导致Session数据没有了。 看你具体使用那个Sesison中间件,我不太清楚,你自己去看文档。

H
halfblood#513 年前

这不是丢session,而是session没有同步的问题吧……

X
xianggp#413 年前

如果是过期了,应该怎么办?@leizongmin ,从新创建session 吗?

D
dengqiao#313 年前

这个问题肯定是你们程序的问题啊,首先判断客户端的cookie中的sid还在不在?如果在然后看redis中sid对应的记录还在不在,排除到是不是过期问题.

L
leizongmin#213 年前

session过期了吧

Y
youxiachai#113 年前

去express 的github 提issue...

参与回复

登录后即可参与回复。登录