Forza SSL usando ssl_requirement nell’app Rails 2

Ho un’applicazione Rails che deve essere eseguita sotto SSL. Ho provato ssl_requirement ma sembra che devo digitare tutte le azioni in ogni controller.

C’è qualche metodo che posso aggiungere un before_filter nel controller dell’applicazione con ssl_requirement, in modo che le app reindirizzino automaticamente a https quando la richiesta utente è in http?

Ringrazia tutti. 🙂

Utilizzare un middleware rack .

# lib/force_ssl.rb class ForceSSL def initialize(app) @app = app end def call(env) if env['HTTPS'] == 'on' || env['HTTP_X_FORWARDED_PROTO'] == 'https' @app.call(env) else req = Rack::Request.new(env) [301, { "Location" => req.url.gsub(/^http:/, "https:") }, []] end end end # config/environment.rb config.middleware.use "ForceSSL" 

Puoi provare se la richiesta è in ssl o meno in un before_filter nella tua applicazione

 class Application < AC::Base before_filter :need_ssl def need_ssl redirect_to "https://#{request.host}/#{request.query_string}" unless request.ssl? end end 

Il problema chiave è che force_ssl.rb non viene caricato e che lib non viene caricato di default nei binari 3.1. Devi aggiungere

 config.autoload_paths += %W(#{config.root}/lib) config.autoload_paths += Dir["#{config.root}/lib/**/"] 

a application.rb