4

是否有支持完全由客户端管理的会话的框架?换句话说,不是只在 cookie 中存储签名的 pid(如 Express 那样),而是存储所有上下文......这样您就可以跨集群管理状态而无需持久化。

4

1 回答 1

1

有支持这一点的快速中间件:

https://github.com/expressjs/cookie-session

cookieSession()

提供基于 cookie 的会话,并填充 req.session。该中间件采用以下选项:

  • name - cookie 名称,默认为“ session
  • keys - 防止篡改的密钥列表
  • secret -如果未指定密钥,则用作单个密钥
  • options - 附加选项,例如安全、httpOnly、maxAge 等。

中间件:

var cookieSession = require('cookie-session')
...
app.use(cookieSession({
    name: "my_session_cookie",
    secret: "dont_tell_anybody_the_secret_and_change_it_often",
    options: { ... }
));

app.use((req, res, next) => {
    // set options on req.session before your response goes out
    req.session.viewCount = (req.session.viewCount || 0) + 1;
    res.end(`You viewed the page ${req.session.viewCount} times.`);
});

要清除 cookie,只需在响应之前将会话分配为 null:

req.session = null
于 2013-08-04T17:32:24.497 回答