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

k3bvogb1  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(107)

我正在尝试学习Node的“cookie会话”模块。https://github.com/expressjs/cookie-session
我很难理解如何传递cookie的选项。例如过期。违约似乎是一年!

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

但是我不明白!我是否也需要Cookie模块?或者我以某种方式改变选项槽var session = require('cookie-session')?我试过session.cookies.set(),但似乎不起作用。
我试着在“cookie-session”和“cookies”模块中读取源代码来寻找线索,但我不知道该找什么!

llycmphe

llycmphe1#

简短回答

定义要在创建会话时指定的选项,如文档中所示: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.sessionOptions。创建new Session时传入req,存储为this._ctx。最后,当在Session上调用save时,这些选项会从sessionOptions中提取出来,并在set调用中使用:

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

相关问题