在sails.js应用程序中设置安全cookie

时间:2015-04-08 14:22:51

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

配置sails.js以设置安全cookie的方法是什么?我们使用redis来持久化会话状态。需要sails.js规定的方式(而不是一些Express中间件选项)。最后,我希望检查Chrome Cookie视图中的“安全”列以查看应用的Cookie:

enter image description here

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:6)

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

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

  

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

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

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

答案 1 :(得分:0)

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

由于sails正在使用他们自己的会话商店实现,而不是捎带node-client-sessionsexpress-sessions,解决这个问题的唯一方法(我认为)就是向风帆人员提交PR

抱歉!

答案 2 :(得分:0)

您可以像这样设置签名的Cookie

添加名为" chocolatechip"的签名cookie有价值"美味:

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

检索cookie:

req.signedCookies.chocolatechip; //"Yummy"

检查风帆Documentation