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

How to pass cookie options in cookie-session 1.0.2

本文关键字:cookie 选项 cookie-session      更新时间:2023-09-26

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

我很难理解如何传递cookie的选项。比如过期。违约似乎要一年了!

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

但是我不明白!我应该需要cookie模块吗?或者我通过var session = require('cookie-session')改变选项?我试过session.cookies.set(),但那似乎不起作用。

我试着在"cookie-session"answers"cookies"模块中阅读源代码寻找线索,但我不知道要找什么!

简短回答

定义要在创建会话时指定的选项,如docs: 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...
}))

长回答

使用上面的示例,当您将配置对象传入session时,您将该对象发送到这里的函数中。这个opts被传递,但特别地,这里存储为req.sessionOptionsreq在创建new Session时传入,并存储为this._ctx。最后,当在Session上调用save时,这些选项将从sessionOptions中提取出来,并在set调用中用于cookie:

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调用。