node express session怎么用
发布于 10 年前 作者 spasserby 5547 次浏览 最后一次编辑是 8 年前 来自 问答

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

8 回复

如果要持久就存数据库中

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

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

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

@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集合里的数据不用你管理

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

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

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

回到顶部