为什么node express 的req.session 中有cookie?

mar*_*hro 5 cookies session node.js express

这更多是为了我的理解。为什么 express 中的 req.session 中有一个 cookie 对象?我使用 req.session 来存储登录状态和用户名。req.session 中的 cookie 对象与客户端 cookie 中的 cookie 属性相同,由 express.parseCookie 放置,但没有 sessionID。任何人都可以解释为什么这是在那里?它不能用于识别 cookie 和会话,因为 cookie 值和会话 ID (req.session.ID) 已经确定了,还是我错了?

- req.session --> 
{ cookie: 
{ path: '/',
 _expires: null,
 originalMaxAge: null,
 httpOnly: true },
  loggedIn: true,
  username: 'luidpold' }
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 4

为了方便。它\xe2\x80\x99是与会话关联的cookie,你可以查询/修改它。

\n\n

Express 中的会话处理程序来自 Connect。Connect 的文档说:

\n\n
\n

会话#cookie

\n\n

每个会话都有一个唯一的 cookie 对象。这允许您更改每个访问者的会话 cookie。例如我们可以设置\n req.session.cookie.expires为 false,以使 cookie 仅在用户代理的持续时间内保留。

\n\n

会话#maxAge

\n\n

或者req.session.cookie.maxAge返回剩余时间(以毫秒为单位),我们也可以重新分配一个新值来 .expires适当调整属性。

\n
\n

  • 我们可以在 req.cookies 中找到的 cookie 之间有什么区别,我们可以使用 res.cookie('somekey', 'somevalue'); 来更改它。以及会话中的 cookie:req.session.cookie ?后者的属性是前者的一种元数据吗?那么,当更改 .expires 或 maxAge 值时,将修改这些 cookie 中的哪一个?我也无法使用 req.session.cookie.myvar 以任何方式向会话 cookie 添加任何更多属性。无论如何,我不认为 cookie 会存储在浏览器中,因为它没有 connect.sid。 (4认同)