如何在cookie-session 1.0.2中传递cookie选项

时间:2014-06-05 16:07:35

标签: javascript node.js cookies express connect

我正在尝试学习Node的“cookie-session”模块。 https://github.com/expressjs/cookie-session

我很难理解如何传递cookie的选项。例如到期。默认似乎是一年!

这是有关Cookie选项的说明: “其他选项会传递给cookies.get()cookies.set(),允许您控制其他设置中的安全性,域名,路径和签名。”

但我不明白! 我是否应该要求使用cookies模块? 或者以某种方式通过var session = require('cookie-session')更改选项? 我试过了session.cookies.set(),但这似乎不起作用。

我试图在“cookie-session”和“cookies”模块中阅读源代码以获取线索,但我不知道该寻找什么!

1 个答案:

答案 0 :(得分:2)

简短回答

定义要在会话创建中指定的选项,如文档中所示:https://github.com/expressjs/cookie-session。它们将在创建cookie时使用(包括expires选项)。

app.use(session({
  keys: ['key1', 'key2'],
  secureProxy: true // if you do SSL outside of node
  // more options here...
}))

答案很长

使用上面的示例,将配置对象传入sessionyou are sending this object into the function here。这个opts传递,但特别是stored as req.sessionOptions here。创建reqand stored as this._ctx时会传入new Session。最后,在savethese options are pulled from the sessionOptions and used in the set call for the cookies

上调用Session
Session.prototype.save = function(){
  var ctx = this._ctx;
  var json = this._json || encode(this);
  var opts = ctx.sessionOptions;
  var name = ctx.sessionKey;

  debug('save %s', json);
  ctx.sessionCookies.set(name, json, opts);
};

因此,在创建cookie时,您最初传递的选项会传递给set调用。