0

関連するコントローラーで次のようなことを行って、force_ssl メソッドで SSL を使用しているアプリケーションのセクションがあります。

class MyController < ApplicationController
  force_ssl
end

これは問題なく動作しますが、このセクションに含まれていないページでは SSL を使用したくありません。不要な場合に非 SSL プロトコルにリダイレクトすることは可能ですか?

4

2 に答える 2

1

HTTP レベルで SSL リダイレクトを行わないのはなぜですか? HTTP レベルで行うと、よりクリーンで高速になります (リクエストが Rails の前にリダイレクトされるため)。

force_sslソース コード ( http://apidock.com/rails/ActionController/ForceSSL/ClassMethods/force_ssl )を見る と、単純なリダイレクトが行われます。

の :protocol オプションを使用したくない場合もありますlink_to

于 2013-11-04T17:19:08.473 に答える
0

これには自動魔法の機能があるとは思いません。そのため、SSL が必要な場所とそうでない場所を定義する必要があります。そのマッピングを作成すると、ApplicationController で単純な条件を作成するのは簡単です。

このように、構文を気にしない場合

https_only = { auth:{'login','logout',...}, registration:{'new','edit',...},...}

https_only.each do |controller, actions|
    if controller_name == controller
        actions.each do |a|
            if action_name == a
                do_redirect_to_https_with_current_path
            else
                do_nothing
        end
    end
end
于 2013-11-04T16:14:00.117 に答える