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

标签 javascript node.js express cookies

我正在尝试学习 Node.js 的“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”模块中的源代码来寻找线索,但我不知道该寻找什么!

最佳答案

简短回答

定义要在创建 session 时指定的选项,如文档中所示: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 时,you are sending this object into the function here 。此 opts 被传递,但特别是 stored as req.sessionOptions here 。创建new Session时传入reqand stored as this._ctx 。最后,当在 Session 上调用 save 时,these options are pulled from the sessionOptions and used in the set call for the cookies :

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

关于javascript - 如何在 cookie-session 1.0.2 中传递 cookie 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065054/

相关文章:

javascript - Nodejs - 加载一次模块并在许多不同的文件中使用

javascript - axios 请求 n 次,其中 n 是先前响应的长度

javascript - 如何检查JavaScript中是否调用了对象属性或函数?

javascript - JavaScript 中的对象语法和 this

javascript - 为什么我无法在 Intellij IDEA 11 中调试 nodejs 应用程序?

php - Varnish 503 错误(缓存过载?)

html - 通过传递参数运行 Node.js

javascript - 在循环完成nodejs请求之前执行回调

javascript - 如何删除多行字符串中每一行的前 40 个字符?

node.js - nodejs 表示嵌套的 sequelize 异步等待