ruby-on-rails-3 – 用于rails应用程序的安全会话cookie

我的session_store.rb中有以下配置

Fuel::Application.config.session_store :cookie_store,:key => "_secure_session",:secure => !(Rails.env.development? || Rails.env.test?),:domain => :all

在application_controller.rb中

def default_url_options
  return { :only_path => false,:port => 443,:protocol => 'https' }
end

我正在使用设计,我的rails3服务器在HAProxy后面运行. HAProxy终止HTTPS流量并将HTTP请求传递给Rails.我的问题是当我打开时:secure =>如果在session_store.rb中为true,则会将用户重定向登录页面,并显示消息“Unauthorized”.我已经尝试了很多调试,不知道如何让它工作.

在这种情况下,HAProxy是反向代理,终止所有安全流量并将非安全流量传递给rails.当rails将cookie设置为安全时,它本身无法访问它.

解决方法

对于您的正常会话cookie,您正确地执行此操作.您应该在浏览器中看到’_secure_session’cookie正确设置为安全.对于Devise“记住我”cookie,您需要在设计配置中设置它.在config / initializers / devise.rb中,你会在第133行的某处看到一条直线

# Options to be passed to the created cookie. For instance,you can set
# :secure => true in order to force SSL only cookies.
# config.cookie_options = {}

我把它改为:

config.rememberable_options = {:secure => Rails.env.production?}

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...