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

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

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

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

但我没有得到它! 我是否也需要cookies模块? 或者我以某种方式更改选项槽var session = require('cookie-session') ? 我已经尝试session.cookies.set() ,但似乎并没有工作。

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

简短的回答

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

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

长答案

使用上面的例子,当你将configuration对象传递给session , 你将这个对象发送到这里的函数中 。 这opts传递,但特别是, 在这里存储为req.sessionOptions 。 当创build一个new Sessionreq被传入, 并存储为this._ctx 。 最后,在Session上调用save时, 这些选项将从sessionOptions中提取出来,并用于cookies的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); }; 

所以当你创buildcookie的时候,你传入的选项会被传递给set调用。