我在用戶和會話控制器中使用force_ssl。這很好。當我在這些控制器中的任何一箇中執行操作時,我的瀏覽器將重定向到https。問題在於,在用戶被重定向到https後,他們的瀏覽器將至少在使用相對URL時繼續使用https。我寧願用戶在應用程序中爲其他頁面使用http。我提出了3種可能的策略來引導用戶回到其他頁面的http。Force_ssl /強制回到http。什麼是最好的方法來做到這一點?
使用絕對網址而不是相對網址。有了這個策略,我避免使用root_path之類的東西,而是使用root_url。我可以在我的應用程序控制器中設置default_url_options以使用http協議。這樣,我的應用程序中的所有鏈接都會嘗試引導用戶返回http。他們總是可以手動將其切換到https,但我並不在乎他們是否這樣做。
在過濾器之前寫一個類似於https://gist.github.com/1040964的過濾器。我不太喜歡這個,因爲我不得不重複哪些控制器/操作,我強制在應用程序控制器以及特定的控制器中使用force_ssl。
使用此插件https://github.com/bartt/ssl_requirement。這個插件看起來不錯,因爲如果我什麼都沒說,它默認會強制爲http。強制ssl看起來與包含force_ssl方法非常相似。這似乎是一個很好的解決方案,但我不想依賴插件,如果沒有它,有一個簡單的方法來做到這一點。
我不能確定這3個選項中的哪一個是最好的,我正在尋找指導。我也是Rails的新手,所以如果這些解決方案中的任何一個都是「不好的」,請讓我知道。此外,如果有其他選項,我不知道請讓我知道。
哪個解決方案最好? (Rails 3.2)