如何在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 Session
, req
被传入, 并存储为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
调用。