2013-06-24 113 views
4

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

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

有人可以指点一些阅读,或围绕我如何实现这样的东西吗?甚至在哪里看 - 我有点难住。找不到太多

+0

嗯,要么它是安全的,要么不是。你不可能有两种方法...... – ircmaxell

+0

我不确定你的意思 - 非常新的会议等 –

+1

你有没有考虑过使用'HTTPS'为整个应用程序? – house9

回答

8

默认情况下,rails会话数据存储在cookie中,听起来像您只想使用SSL cookie?

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

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

产生饼干

当设计应采用导轨设置

原来答案在你config/initializers/devise.rb文件

应该看起来像这样的一条线

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

尝试添加到config.rememberable_options并重新启动轨道 - 注:是不是你会想发展模式,你也许可以做到

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

还看到:

+0

嗯这个选项似乎没有改变任何东西。 –

+0

这只会改变可记忆的cookie – David

+0

我不希望通过HTTP发送任何会话。那可能吗? –