11

を除くアプリケーションのすべてのルートでSSL を強制する必要がありますlanding#index

config/application.rb、私は持っています:

config.force_ssl = true

次にlanding_controller.rb、私は持っています:

force_ssl :except => :index

ただし、すべてのルートは依然として にリダイレクトされていhttpsます。

Rails 3.1+ アプリケーションで条件付きで SSL を強制する方法を知っている人はいますか?

解決:

以下を に追加しますGemfile

gem 'rack-ssl-enforcer'

以下を に追加しますconfig/application.rb

config.middleware.use Rack::SslEnforcer, :except => [ /\/$/ ], :strict => true
4

3 に答える 3

13

ここでstackoverflowで同様の質問をしたところ、https://github.com/tobmatth/rack-ssl-enforcerを使用するように言われました。まだ試していませんが、readme に基づいて、特定のルートで条件付きで ssl を適用するという問題を解決するようです。

于 2012-06-06T04:42:37.653 に答える
6

ActiveAdmin 1.0b を使用する Rails 4 では、config/initializers/active_admin.rb を変更しました。

config.before_filter :force_ssl_redirect, if: :https_enabled?

force_ssl_redirectactionpack/lib/action_controller/metal/force_ssl.rb で定義されており、Rails のforce_sslクラス メソッドが呼び出すものです。

https_enabled?私のapplication_controller.rbで定義されています:

def https_enabled?
  ENV['HTTPS_ENABLED'] == 'true'
end
于 2014-04-02T16:50:51.703 に答える
-2

あなたはこのようにそれを行うことができます:

コントローラ

force_ssl :except => :index

見る

インデックスパス名がindex_landing_pathであると仮定します

<%= link_to 'Landing', index_landing_path, :protocol => 'http' %>
于 2012-05-27T11:33:16.347 に答える