2011-07-27 11 views

Odpowiedz

7

Domyślnie wszystkich kontrolerów powinny dziedziczyć ApplicationController.

ssl_required jest rzeczywiście wspierany przez chronioną metodę o nazwie ssl_required?, która określa, czy dla danej akcji wymagane jest SSL. Ta implementacja spowoduje, że protokół SSL będzie zawsze wymagany w środowisku produkcyjnym (ale nie w inny sposób, więc nadal możesz wykonywać programowanie w zwykły sposób).

class ApplicationController < ActionController::Base 
    # (... other stuff ...) 

    protected 

    def ssl_required? 
    Rails.env.production? 
    end 
end 

zależności od środowiska, może to być również możliwe do serwera nadrzędnego, aby tylko być dostępne za pośrednictwem protokołu HTTPS (na przykład, jeśli używasz Apache, można go skonfigurować, aby nie służyć swoją aplikację przez port 80). To zależy od konfiguracji serwera.

+0

czy nie musisz jeszcze określać, jakich działań użyć? nawet jeśli przedefiniujesz metodę o nazwie ssl_required? – NullVoxPopuli

+0

ssl_required przyjmuje listę akcji, które przechowuje w tablicy. Domyślna implementacja ssl_required? po prostu sprawdza, czy bieżąca akcja znajduje się w tej tablicy. To przesłania to, aby było stosowane do wszystkich akcji, zawsze (no chyba, że ​​ssl_required? Jest nadpisywane ponownie w podklasie). –

+0

więc ... jak wywołać ssl_required? globalnie? – NullVoxPopuli