我正在尝试学习 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
时传入req
,and 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/