2012-03-03 70 views
0

我在用户和会话控制器中使用force_ssl。这很好。当我在这些控制器中的任何一个中执行操作时,我的浏览器将重定向到https。问题在于,在用户被重定向到https后,他们的浏览器将至少在使用相对URL时继续使用https。我宁愿用户在应用程序中为其他页面使用http。我提出了3种可能的策略来引导用户回到其他页面的http。Force_ssl /强制回到http。什么是最好的方法来做到这一点?

  1. 使用绝对网址而不是相对网址。有了这个策略,我避免使用root_path之类的东西,而是使用root_url。我可以在我的应用程序控制器中设置default_url_options以使用http协议。这样,我的应用程序中的所有链接都会尝试引导用户返回http。他们总是可以手动将其切换到https,但我并不在乎他们是否这样做。

  2. 在过滤器之前写一个类似于https://gist.github.com/1040964的过滤器。我不太喜欢这个,因为我不得不重复哪些控制器/操作,我强制在应用程序控制器以及特定的控制器中使用force_ssl。

  3. 使用此插件https://github.com/bartt/ssl_requirement。这个插件看起来不错,因为如果我什么都没说,它默认会强制为http。强制ssl看​​起来与包含force_ssl方法非常相似。这似乎是一个很好的解决方案,但我不想依赖插件,如果没有它,有一个简单的方法来做到这一点。

我不能确定这3个选项中的哪一个是最好的,我正在寻找指导。我也是Rails的新手,所以如果这些解决方案中的任何一个都是“不好的”,请让我知道。此外,如果有其他选项,我不知道请让我知道。

哪个解决方案最好? (Rails 3.2)

回答

相关问题