【问题标题】:set secure cookie in sails.js app在sails.js 应用程序中设置安全cookie
【发布时间】:2016-09-06 18:19:24
【问题描述】:

如何配置sails.js 来设置安全cookie?我们正在使用 redis 来保持会话状态。需要sails.js 规定的方式(而不是某些Express 中间件选项)。最终,我希望在 Chrome cookie 视图中的“安全”列中检查应用程序的 cookie:

在文档中,没有明确提及如何执行此操作:

http://sailsjs.org/#!/documentation/reference/sails.config/sails.config.session.html

有一个ssl 配置选项,但使用ssl: true 部署应用程序并没有产生预期的结果:

module.exports.session = {
  ...
  ssl: true
  ...
}

ssl 选项也没有记录,但我认为它与签署 cookie 有关。

编辑:在屏幕截图中,我在没有 HTTPS 的情况下从 localhost 提供服务,但这个应用程序是从使用 HTTPS 的生产服务器提供的,并且观察到相同的行为

【问题讨论】:

  • secure 在 Chrome 中意味着 cookie 被限制在“安全”范围内(通常意味着 HTTPS)。如果您通过 HTTPS 为您的网站提供服务,我认为您可以在会话配置中使用 secure : true;这就是Express's session middleware 的工作原理,但不确定 Sails.js。

标签: javascript node.js cookies redis sails.js


【解决方案1】:

Sails 使用 express.session 处理会话 cookie,因此您可以通过在 config/session.js 中设置 cookie: { secure: true } 来启用安全 cookie

您需要使用 HTTPS 来快递到set the cookie

它需要启用 https 的网站,即,HTTPS 是安全所必需的 饼干。如果设置了安全,并且您通过 HTTP 访问您的站点, 不会设置 cookie。

如果您使用的是代表您的 Web 服务器执行 SSL 终止的代理,请通过在 config/http.js 中添加以下中间件来启用 express trust proxy 选项

    module.exports.http = {
      customMiddleware: function(app) {
        app.enable('trust proxy');
      }
    }; 

【讨论】:

  • 这应该是公认的答案。完美运行。
  • 我相信这是为 1.0 引入的,在 0.12 中不存在。
  • @Ofer - 我尝试在 v0.12 中启用安全 cookie + 信任代理配置,但sails.sid/cookie 没有出现在浏览器中,还有其他要求吗?还是仅在 v1.0 中有效?
  • @Aaron 因为答案是 4 岁,我认为它是sails v0.12 甚至更早的版本
  • @Aaron - 你找到方法了吗?
【解决方案2】:

目前似乎没有办法做到这一点。如果您在此处查看sails.js 会话实现(https://github.com/balderdashy/sails/blob/98522d0bc5df5e6bc30b4dc35708ae71cf4625e2/lib/hooks/session/index.js),您会发现实际上没有任何安全模式的东西:(

由于sails 使用他们自己的会话存储实现,而不是搭载node-client-sessionsexpress-sessions,解决这个问题的唯一方法(我认为)是向sails 人提交PR。

对不起!

【讨论】:

    【解决方案3】:

    你可以像这样设置签名的cookies

    添加一个名为“chocolatechip”的签名cookie,其值为“Yummy:”

    res.cookie('chocolatechip', 'Yummy', {signed:true});
    

    检索 cookie:

    req.signedCookies.chocolatechip; //"Yummy"
    

    查看风帆Documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2011-08-13
      相关资源
      最近更新 更多