CNode

node express session怎么用

问答
Sspasserby发布于12 年前最后回复12 年前8 回复6009 浏览0 收藏

我像用node express3.0搭了一个注册登录用的网站,写了简单的界面,用mongoose来做数据库。 然后问题来了,登录之后是用Session来记录的,那么在服务器端记录的session是存在内存中,还是存在mongo数据库中? 存在mongo中是不是应该用到require('session-mongoose')?
小白想问一下session到底是怎么用的,有没有好一点的例子。看了一堆博客表示他们写得大多太乱了…… 有没有大神提供小工程借我参考一下~

查看回复

回复 (8)

C
coolicer#1·12 年前

如果要持久就存数据库中

A
alsotang#2·12 年前

你理解得都对。资料还是看博客吧

E
eeandrew#3·12 年前

参考我的git吧。刚好在写这个例子。https://github.com/eeandrew/CookieAndSession 为什么还用express3.0?

S
spasserby#4·12 年前
引用 eeandrew参考我的git吧。刚好在写这个例子。https://github.com/eeandrew/CookieAndSession 为什么还用express3.0?

@eeandrew 赞!!!确实可以用呀!想问一下,之后的时间控制又是怎么做到的?

E
eeandrew#5·12 年前

@spasserby 什么时间控制? session的有效期通过cookie里的maxAge或者expires设置

app.use(session({
secret : 'my secret',
cookie : {maxAge:3000}, //这里设置session有效期
store: new mongoStore({
	db : db.connection.db,
	collection : config.sessionCollection
})
}));

mongoose没分钟会从数据库里删除过期信息,所以sessions集合里的数据不用你管理

S
spasserby#6·12 年前
引用 eeandrew@spasserby 什么时间控制? session的有效期通过cookie里的maxAge或者expires设置 mongoose没分钟会从数据库里删除过期信息,所以sessions集合里的...

@eeandrew 我发现了一个小问题,我把 {maxAge:3000}从3000改到30000,确实有效, 但改回3000却要把mongo里的data都删掉才有效?

S
spasserby#7·12 年前
引用 eeandrew@spasserby 什么时间控制? session的有效期通过cookie里的maxAge或者expires设置 mongoose没分钟会从数据库里删除过期信息,所以sessions集合里的...

@eeandrew 顺便问一下,整个过程是在什么时候req.cookies会不为空 我在req.session.Visit =1后输出req.cookies是空的 而且得到的cookies输出,格式是{'connect.sid' : 's: %%%%%%%%%%%%%%%'}格式的 这个我如果想手动存到mongo应该怎么做?

E
eeandrew#8·12 年前

@spasserby 你好像没弄清cookie和session的区别和联系。 第一个问题:你需要把浏览器的cookie清理后再做测试 第二个问题:req.session.isVisit=1这部分是针对用户首次访问,这时浏览器里还没有存储这个网页cookie,因此为空 第三个问题:sid已经在mongo里了,否则怎么找到session数据呢?所以你不要手动存。实在是想存,可以这样 req.session.connect_sid = req.cookies.connect.sid。就可以了。不需要手动操作mongo。 不过你还是先把cookie和session弄弄清楚吧

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