【问题标题】:Understanding Express Sessions了解快速会话
【发布时间】:2014-09-10 18:15:08
【问题描述】:

我正在使用express.cookieParserexpress.session 浏览this short tutorial on sessions in Express

app.use(express.cookieParser());
app.use(express.session({secret: '1234567890QWERTY'}));

有这样一段话:

Sessions are accessible through the request object in each route. You can get and set
properties just like you would when handling an object normally. For example, lets set 
some session data in the awesome route.

app.get('/awesome', function(req, res) {
  req.session.lastPage = '/awesome';
  res.send('Your Awesome.');
});

两个问题:

  1. req.sesssion 中提到的会话是一个发送给客户端的 cookie,其中包含由 node/express 创建的sessionID,现在它随着 get 请求被发回。这是正确的吗?

  2. 那么在res中,这个session对象会自动附加到res然后发回,更新客户端cookie?

【问题讨论】:

    标签: node.js express session-cookies


    【解决方案1】:

    如果您正在使用会话。浏览器只会在 cookie 中包含 session id。您放入 req.session 变量中的内容将保存在服务器端(或您配置 express 以保存它的位置)。

    在浏览器的 cookie 中设置的会话 ID 将作为服务器识别要为该浏览器加载哪些会话信息的密钥。

    【讨论】:

      【解决方案2】:

      不完全是。 cookie 只是一个随机值,使用您在配置时输入的秘密字符串进行签名。会话对象的实际内容(在您的示例中,{lastPage : '/awesome'})存储在会话存储中,您还应该在 Express 配置中的某处进行配置。大多数演示应用程序可以使用默认的 MemoryStore,但生产应用程序总是使用非易失性存储,如 RedisStore、MongoStore 等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-30
        • 2018-02-12
        • 2019-12-29
        • 2012-09-27
        • 2016-07-06
        • 1970-01-01
        • 2018-07-21
        • 2016-08-08
        相关资源
        最近更新 更多