express的cookie-session中间件

cookie-session中间件说是将session data全部存储在客户端,但是不是存储在req.session中吗?不就是Node-Server的内存中吗?

阅读 2.2k
1 个回答

问题一:session data是否全部存储在客户端

首先要了解session的机制,以用户通过浏览器访问网站为例:

  1. 用户请求到达server
  2. server生成用户的session信息,存储在服务端
  3. server返回用户请求,通过 Set-Cookie 在用户侧种cookie

访问网站的用户很多,服务端存储的session也很多,当用户再次访问网站,server怎么区分当前访问的用户对应的session是哪一个?

答案就是前面讲到的cookie。因此,session data 同时存储在服务端、客户端(比如浏览器)。

问题二:session在服务端的怎么存储

session 在服务端可以存储在多个地方,比如内存、本地磁盘、远程数据库等。cookie-session 默认是存在内存中,也可以选择其他存储方案,具体参考 官方文档

问题三:session data是否存储在req.session中

结论:session数据并不是存储在 req.session 中,只是为了方便用户操作,中间节给挂载到 req.session 上了而已。实际存储位置,参见上一个问题的答案。

流程如下:

用户访问 -> 按需读取用户session data -> 格式化session data -> 挂载到 req.session

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题