express-session的疑问
发布于 8 年前 作者 zp1112 4603 次浏览 来自 问答

关于session和cookie理解了好久,总是似懂非懂,想请问一下express的express-session中间件发挥了什么作用? 按我的理解是 首先,设置了cookie 其次,将该session存到了mongodb里面

问题是,cookie里面存的信息是啥?和mongodb里面一样?还是说只是个标识?就算解密了也只是个标识?

现在的项目是用的hapi,然后cookie存的是用户名,redis存的是具体的用户信息。其实cookie也可以只存没有意义的一个标识吗?然后查找redis的该标识对应的用户来获取具体信息对吗?

先谢谢大家解答。

app.use(cookieParser());
app.use(session({
  secret: settings.cookieSecret,
  key: settings.db,//cookie name
  cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
  store: new MongoStore({
    url: 'mongodb://localhost/blog'
  })
}));
3 回复

google 一下 session 的原理,很多文章阐述

先百度下session做什么,持久化session又是干啥

express-session中间件里的cookie存的是sessionID,参考 express-session——npm,你可以在firebug的cookie面板里看到,名字叫connect.sid,这里你设置了过期时间,就是一个持久cookie,会存在硬盘里,我最近也在学这个,可以参考我写的一个总结 结合express-session中间件理解Session和cookie的概念

Session是指一个用户与网站服务器进行一系列交互的持续时间,通常指从注册进入系统到注销退出系统之间所经过的时间,以及在这段时间内进行的操作,还有,服务器端为保存用户状态开辟的存储空间。

为了实现会话,服务端需要一个会话标识ID能保存到浏览器,让它在后续的请求时都带上这个会话标识ID,以便让服务端知道某个请求属于哪个会话,这样便可以维护与会话相关的状态数据(比如用户登录状态)。由于Cookie对于用户来说,是个不可见的东西,而且每次请求都会传递到 服务端,所以它就是很理想的会话标识ID的保存容器。

回到顶部