繁体   English   中英

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

[英]set secure cookie in sails.js app

配置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从生产服务器提供的,并且观察到相同的行为

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

您需要使用HTTPS for express来设置cookie

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

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

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

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

由于sails正在使用他们自己的会话存储实现,而不是从节点客户端会话快速会话中捎带,解决这个问题的唯一方法(我认为)就是向帆人员提交PR。

抱歉!

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

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

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

检索cookie:

req.signedCookies.chocolatechip; //"Yummy"

查看sails 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM