【问题标题】:How to pass cookie options in cookie-session 1.0.2如何在 cookie-session 1.0.2 中传递 cookie 选项
【发布时间】:2014-07-26 17:36:23
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js cookies express connect


    【解决方案1】:

    简答

    定义您要在创建会话时指定的选项,如文档中所示: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...
    }))
    

    长答案

    使用上面的例子,当你将配置对象传入sessionyou are sending this object into the function here。这个opts 被传递,但特别是stored as req.sessionOptions here。在创建new Sessionand stored as this._ctx 时传入req。最后,当saveSession上被调用时,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 调用。

    【讨论】:

    • 当然,我完全误解了这一点。这一行:“其他选项被传递给 cookies.get() 和 cookies.set()...”让我认为所有其他选项都必须以另一种神秘的方式应用......但它们只是作为你澄清=)
    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多