6

我有一个场景,我不需要在 HTTP 上设置会话,而只需在 HTTPS 页面上设置它。目前的问题是我们在 HTTPS 和 HTTP 之间共享会话字符串。

即,如果您访问我们的 HTTP 页面,您将被分配一个会话字符串(不安全)。当您访问我们的 HTTPS 页面之一时,它使用相同的会话字符串。它们在两者之间共享。我们不希望人们能够通过未加密的连接窥探会话字符串。

有人可以指点我阅读,或者围绕我如何实现这样的目标进行说明吗?即使在哪里看 - 我有点难过。找不到很多

4

2 回答 2

10

Rails 会话数据默认存储在 cookie 中,听起来您只想使用 SSL cookie 吗?

更新:尝试添加secure: true你的config/initializers/session_store.rb文件,即

secure_option = (Rails.env.development? || Rails.env.test?) ? false : true
YourApp::Application.config.session_store :cookie_store, { key: '_xxxx_session', secure: secure_option }

设计在生成 cookie 时应该使用 rails 设置


原始答案

在您的config/initializers/devise.rb文件中应该有一行看起来像这样

 # :secure => true in order to force SSL only cookies.

尝试添加到 config.rememberable_options 并重新启动 rails - 注意:在开发模式下,这不是您想要的,您可能可以这样做

secure_option = (Rails.env.development? || Rails.env.test?) ? false : true
config.rememberable_options = { :secure => secure_option }

也可以看看:

于 2013-06-24T23:55:54.007 回答
-1

如果您想修改会话 cookie,您将不得不在看守回调中修改它们,请参阅此线程此博客文章

或者,您可以使用单独的 cookie。RailsCast在这里

于 2013-06-25T00:43:00.020 回答