2011-02-10 27 views
1

ページがSSL/HTTPSを使用しているときにAJAX呼び出しがRailsサイトで機能していないことがわかりました。私はこれに関連するコントローラにRails 2のすべてのページでssl_allowed/ssl_requiredを設定しますか?

ssl_allowed :action1, :action2, :actionN 

を追加して作業しました。

これは、痛みで将来的にバグが発生する可能性が高いと私は考えています。私はおそらくssl_allowedリストにアクションを追加することを忘れてしまいます。

[ssl_requirement] [1]の宝石の中で、ssl_allowed/ssl_requiredをグローバルに有効にする方法はありますか?私はApplicationControllerにに以下を追加してみましたが、それはうまくいきませんでした:

ssl_allowed :all 
+0

は見てい:http://blog.documentcloud.org/blog/2011/02/https-by-default/をそれは便利だホープ – apneadiving

答えて

2

私は「ssl_allowed:すべてを」可能にするgithubの(link)でグローサーのssl_requirementフォークを発見し、そのバージョンで宝石の私のコピーを置き換えます。今私は "ssl_allowed:all"を私のApplicationControllerで使用しています。まさに私が望んでいたもの。

2

フォークされたプラグインに依存したくない場合は、ssl_allowedを上書きできますか?

class ApplicationController < ActionController::Base 
    ... 
    private 

    def ssl_allowed? 
     true 
    end 
end 

EDIT:あなたのコントローラにこれはは、私はそれがなかったと思った何をしません。 ssl_requiredが指定されていないページのhttpへのリダイレクトを無効にするのではなく、リダイレクト処理全体が何もしないようにします。これは非常に悪いです。コード:

def ensure_proper_protocol 
    return true if ssl_allowed? 

    if ssl_required? && !request.ssl? 
    redirect_to "https://" + request.host + request.request_uri 
    flash.keep 
    return false 
    elsif request.ssl? && !ssl_required? 
    redirect_to "http://" + request.host + request.request_uri 
    flash.keep 
    return false 
    end 
end 

ssl_allowedを追加しますか?コードが代わりに読めば、このような方法は、唯一の答えのようになります。

def ensure_proper_protocol 
    if ssl_required? && !request.ssl? 
    redirect_to "https://" + request.host + request.request_uri 
    flash.keep 
    return false 
    elsif request.ssl? && !ssl_required? && !ssl_allowed? 
    redirect_to "http://" + request.host + request.request_uri 
    flash.keep 
    return false 
    end 
end 
関連する問題