2012-03-03 1 views
0

ユーザとセッションコントローラでforce_sslを使用しています。これは素晴らしいです。これらのコントローラのいずれかでアクションを実行すると、ブラウザはhttpsにリダイレクトされます。問題は、ユーザーがhttpsにリダイレクトされた後、ブラウザーは少なくとも相対URLを使用する場合はhttpsを使用し続けるということです。私はむしろユーザーがアプリケーション内の他のページにhttpを使用したいと思います。私は他のページのためにユーザーをhttpに誘導する3つの可能な戦略を思いついた。Force_ssl/forceをhttpに戻す。これを行う最善の方法は何ですか?

  1. 相対URLの代わりに絶対URLを使用します。この戦略では、root_pathのようなものを使用しないで、代わりにroot_urlを使用します。私はhttpプロトコルを使用するように私のアプリケーションコントローラ内でdefault_url_optionsを設定することができます。このようにして、アプリケーション内のすべてのリンクは、ユーザーをhttpに戻すよう試みます。彼らはいつもブラウザで手動でhttpsに切り替えることができましたが、そうするかどうかは気にしません。

  2. https://gist.github.com/1040964と同様のフィルターを作成してください。私はこれを本当に好きではありません。なぜなら、アプリケーションコントローラと、force_sslを使用する特定のコントローラでsslに強制するコントローラ/アクションを繰り返す必要があるからです。

  3. このプラグインはhttps://github.com/bartt/ssl_requirementを使用してください。このプラグインは、私が何も言わないと、デフォルトでhttpに強制されるのでいいと思われます。 sslへの強制は、include_forceメソッドと非常によく似ています。これは良い解決策のように思えますが、プラグインなしでこれを行う簡単な方法があれば、プラグインに頼るのは嫌です。

これらの3つのオプションのうち、どれが最適で、ガイダンスを探しているのか判断できません。私もRailsの新機能ですので、これらのソリューションのいずれかが「悪い」場合はお知らせください。また、他のオプションがある場合は私に知らせてください私に知らせてください。

どのソリューションが最適なのですか? (Rails 3.2)

答えて

1

ベストはプラグインです。そのプラグインのソースコードは、あなたの要点のコードに非常によく似ています。あなたがプラグインを嫌うなら実際には、あなたが本当に必要なのは、ここに一部です:

https://github.com/bartt/ssl_requirement/blob/master/lib/ssl_requirement.rb#L112

あなたのapplication_controller.rbにそれを適応させるか、完全にプラグインを取ることができます。

乾杯。

関連する問題