как мне сделать так, чтобы все пути Devise использовали https?

По теме: Rails 3 SSL-маршрутизация перенаправляет с https на http (к сожалению не сработало).

Повторяется, но ответ у меня не сработал: настройка ssl на устройстве

У меня есть веб-приложение, которое некоторое время работает нормально, но мне нужно добавить SSL для входа / редактирования acct пути. Я использую Devise для аутентификации. Я нашел запись в devise wiki, из-за которой процесс казался довольно простым, но, черт возьми, я смогу заставить его работать. Самая простая часть заключалась в следующем:

#in config/environments/production.rb
config.to_prepare { Devise::SessionsController.force_ssl }
config.to_prepare { Devise::RegistrationsController.force_ssl }

И затем в этой сущности содержится около 25 строк кода: https://gist.github.com/1040964

Я понял, что это работает достаточно хорошо, но когда-либо я выйти из системы Я получаю 301 из действия DELETE сеанса, которое отправляет меня на GET.

Started DELETE "/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 "/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] "/users/sign_out"):

Думаю, мне нужно начинать с нуля. Какой самый простой способ заставить любой путь Devise использовать https, а остальные пути в моем приложении используют http? Я пробовал это (из сообщения SO вверху):

 #devise routes
  scope :protocol => 'https://', :constraints => { :protocol => 'https://' } do
    devise_for :users, :controllers => { :registrations => :registrations }
    devise_for :admins
  end

Но не пойдет. Мне нужно предложение получше.

7
задан Community 23 May 2017 в 12:24
поделиться