首页 > 解决方案 > 如何为通过安全 SSL 通道访问的 Rails 应用程序中的会话 cookie 提供安全标志(仅限 HTTPS)?

问题描述

我在 Rails 4.1.1 应用程序中将 :active_record_store 用于 session_store。我需要在我的应用程序中使会话 cookie 安全(仅限 HTTPS)。在开发环境中尝试了以下代码,但对我不起作用。

MyApp::Application.config.session_store :session_store, key: '_session_id', secure: true

config.force_ssl = true: makes all cookie(s) as secure whcih is not  requirement.

如何在应用程序配置中默认为 cookie 设置安全标志,以便它指示浏览器只能通过安全 SSL 通道访问 cookie?

标签: ruby-on-railsruby-on-rails-4httpssession-cookiespassenger

解决方案


要将会话 cookie 标记为安全,您可以这样做,

MyApp::Application.config.session_store :cookie_store,
  key: "_session_id",
  secret: "your_secret",
  secure: Rails.env.development?,
  httponly: true

config.session_store 通常在 config/initializers/session_store.rb 中设置,并指定使用什么类来存储会话。可能的值是 :cookie_store (默认值)、:mem_cache_store 和 :disabled。最后一个告诉 Rails 不要处理会话。


推荐阅读