Correlato: Rails 3 SSL routing redirects from https to http (sfortunatamente non ha funzionato).come devo fare per fare in modo che tutti i percorsi di Devise utilizzino https?
duplicati, ma la risposta non ha funzionato per me: setting up ssl on devise
Ho una web app che ha lavorato bene per un po 'di tempo, ma ho bisogno di aggiungere SSL per i percorsi di accesso/modifica acct. Sto usando Devise per l'autenticazione. Ho trovato una voce nel wiki di devise che ha reso il processo abbastanza semplice, ma dannazione se riesco a farlo funzionare. La parte semplice è questa:
#in config/environments/production.rb
config.to_prepare { Devise::SessionsController.force_ssl }
config.to_prepare { Devise::RegistrationsController.force_ssl }
E poi c'è circa 25 righe di codice in questo succo: https://gist.github.com/1040964
ho avuto che lavorare abbastanza bene, ma quando mai i dati di login ho un 301 dal le sessioni CANCELLANO l'azione che mi invia a un GET.
Started DELETE "https://stackoverflow.com/users/sign_out" for 98.246.164.160 at 2012-03-02 01:45:42 +0000
[02 Mar 01:45 10886 INFO] Processing by Devise::SessionsController#destroy as HTML
[02 Mar 01:45 10886 INFO] Parameters: {"authenticity_token"=>"fI4VZ4V0Go2Civo3sJz8Dv5/Wtaa90ynaYr+xxx="}
[02 Mar 01:45 10886 DEBUG] Parameters: {"_method"=>"delete", "authenticity_token"=>"fI4VZ4V0Go2Civo3sJz8Dv5/Wtaa90ynaYr+xxxx=", "action"=>"destroy", "controller"=>"devise/sessions"}
[02 Mar 01:45 10886 INFO] Redirected to https://ec2-xx-xx-106-255.us-west-2.compute.amazonaws.com/users/sign_out
[02 Mar 01:45 10886 INFO] Completed 301 Moved Permanently in 3ms
Started GET "https://stackoverflow.com/users/sign_out" for xx.xx.164.160 at 2012-03-02 01:45:42 +0000
[02 Mar 01:45 10886 FATAL]
ActionController::RoutingError (No route matches [GET] "https://stackoverflow.com/users/sign_out"):
Quindi penso che ho bisogno di ricominciare da capo. Qual è il modo più semplice per rendere https qualsiasi percorso Devise, ma il resto dei percorsi nella mia app utilizza http? Ho provato questo (dal post SO in alto):
#devise routes
scope :protocol => 'https://', :constraints => { :protocol => 'https://' } do
devise_for :users, :controllers => { :registrations => :registrations }
devise_for :admins
end
Ma non andare. Ho bisogno di un suggerimento migliore.