CNode

express老是丢session是怎么回事啊

Jjtyjty99999发布于13 年前最后回复9 年前13 回复12884 浏览0 收藏

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

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

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

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

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

查看回复

回复 (13)

Y
yinguangyao#1·9 年前

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

Y
youxiachai#2·13 年前

去express 的github 提issue...

L
leizongmin#3·13 年前

session过期了吧

D
dengqiao#4·13 年前

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

X
xianggp#5·13 年前

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

H
halfblood#6·13 年前

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

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

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

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

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

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

J
jtyjty99999#8·13 年前

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

J
JacksonTian#10·13 年前

是不是session跨进程了?

G
guoxy#11·13 年前

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

P
Pana#12·13 年前

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

L
linghao2014#13·10 年前

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

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