2017-06-05 14 views
1

Ruby on Rails 5アプリケーションの場合、config.force_ssl = trueが私のproduction.rbにありますが、force_sslではなくコントローラが1つだけ必要です。これは各コントローラを設定することなく可能ですか?単一のコントローラ内にunforce_sslへの道はありますか?単一のコントローラでsslを抑制する方法

答えて

2

です質問。これを適用するすべてのコントローラーを一度変更する必要がありますが、良いことは一度だけ行う必要があり、SecureControllerに機能を拡張できることです。あなたの質問のような音は、:skip、または:exceptにはbefore_actionという方法を求めていますが、私が知っているほとんどのRails開発者は、これを実行する方法に同意します。

+0

thx - 私はこのようにしました。私はミドルウェアでそれをすることを考えていましたが、私はこれがより好きです。 – timpone

0

this page

に応じてあなたはbefore_action コールバックのみ

に影響を与えるために、次のいずれかのオプションを渡すことができます - コールバック - コールバックだけを除いて、このアクション

のために実行する必要がありますこのアクション以外のすべてのアクションに対して実行する必要があります。

if - インスタンスメソッドまたはプロセスの名前を示すシンボル。コールバックは真の値を返すときにのみ呼び出されます。

- インスタンスメソッドまたはプロセスの名前を示すシンボル。コールバックはfalse値を返すときにのみ呼び出されます。

これはコントローラのレベルforce_sslを使用していますが、そして、あなたはすべてのコントローラは、1つを除いてSecureController

class ThingsController < SecureController 
    ... 
end 

を継承することができます

class SecureController < ApplicationController 
    force_ssl 
end 

設定レベルFORCE_SSLは、あなたが安全なコントローラを作成することができますアプリケーションの広い

+0

これは役に立ちません。 OPは、選択的なアクションだけでなく、コントローラ全体に対してforce_sslを除外する方法を探しています –

関連する問題