2013-06-24 110 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發送任何會話。那可能嗎? –