【发布时间】:2014-01-23 04:29:30
【问题描述】:
如果我通过app.use(express.session({secret: "12345"})); 启用 express 的会话功能,会话 cookie 会在用户第一次点击页面时设置。
如何禁用此行为并手动决定何时创建 cookie,例如在成功登录后?我知道我可以手动构建一个 cookie-header,但我想继续使用 express.session。
【问题讨论】:
-
这将非常棘手且容易出错。你能告诉我你为什么想要那个吗?
-
显然不仅在客户端创建了一个cookie,而且只有在服务器端分配的资源。我认为如果用户从不登录,避免后者是个好主意,那是永远不需要会话。我的意思是,如果您不期望有很多访客,它可能会被忽略。我只是不喜欢我的内存或数据库存储被“污染”的想法。有什么我没看到的吗?
-
大型网站会将静态数据移动到其他域,所以大部分请求不会创建会话,例如
static1.yourdomain.com/image/i1.jpg不会创建会话。在express中,您可以将app.use(express.static(...))移动到其他中间件的顶部,这样cookie 和会话中间件将不会针对静态请求运行。 -
我已经在这样做了,它大大减少了创建的永远不会使用的会话数量,但不会为零,因此不能称为解决方案。我可以在 sotrage 中(不是在客户端)指定会话条目的到期日期吗?
标签: javascript node.js session cookies express