我正在尝试学习Node的“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”模块中阅读源代码以获取线索,但我不知道该寻找什么!
答案 0 :(得分:2)
定义要在会话创建中指定的选项,如文档中所示: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。创建req
,and stored as this._ctx
时会传入new Session
。最后,在save
,these options are pulled from the sessionOptions
and used in the set
call for the cookies:
Session
时
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
调用。