我有一个场景,我不需要在HTTP上设置会话,而只需在HTTPS页面上设置会话。目前的问题是我们在HTTPS和HTTP之间共享会话字符串。设计 - 它如何设置会话cookie?
I.e.如果您访问我们的HTTP页面,则会为您分配会话字符串(不安全)。当您访问我们的某个HTTPS页面时,它将使用相同的会话字符串。它们在两者之间共享。我们不希望人们能够通过未加密的连接监听会话字符串。
有人可以指点一些阅读,或围绕我如何实现这样的东西吗?甚至在哪里看 - 我有点难住。找不到太多
我有一个场景,我不需要在HTTP上设置会话,而只需在HTTPS页面上设置会话。目前的问题是我们在HTTPS和HTTP之间共享会话字符串。设计 - 它如何设置会话cookie?
I.e.如果您访问我们的HTTP页面,则会为您分配会话字符串(不安全)。当您访问我们的某个HTTPS页面时,它将使用相同的会话字符串。它们在两者之间共享。我们不希望人们能够通过未加密的连接监听会话字符串。
有人可以指点一些阅读,或围绕我如何实现这样的东西吗?甚至在哪里看 - 我有点难住。找不到太多
默认情况下,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 }
还看到:
如果要修改你将不得不修改它们的监狱长回调会话cookie看到this thread和this blog post
或者,你可以使用separate cookie。 RailsCast here。
嗯,要么它是安全的,要么不是。你不可能有两种方法...... – ircmaxell
我不确定你的意思 - 非常新的会议等 –
你有没有考虑过使用'HTTPS'为整个应用程序? – house9