rails 3 devise: как мне заставить ссылки для подтверждения электронной почты использовать безопасный https (не http)

#ruby-on-rails #https #devise

#ruby-on-rails #https #разработка

Вопрос:

Как мне указать Devise использовать https (не http) для всех ссылок подтверждения учетной записи, напоминания пароля и т.д.?

[примечание: я не ищу решение для перенаправления всех http на https, мне просто нужно разработать, чтобы ссылки, которые он создает, использовали https]

Наше приложение rails 3 использует devise, и приложение отлично работает по протоколу https, однако devise всегда использует http для подтверждения электронной почты и ссылок с паролями, которые оно отправляет пользователям по электронной почте.

В наших файлах среды я попытался изменить:

 config.action_mailer.default_url_options = { :host => "app1.mydomain.com" }  
  

Для

  { :host => "https://app1.mydomain.com" }
  

но, как и ожидалось, devise создает ссылки, которые выглядят как
http://https//app1.mydomain.com …. (например, он добавляет в :настройки хоста http:)

Ответ №1:

default_url_options принимает те же параметры хэша, что и url_for . Итак, вы должны быть в состоянии сделать это:

 config.action_mailer.default_url_options = { :protocol => 'https', :host => 'app1.mydomain.com' }
  

Комментарии:

1. Если вам нужны только конкретные ссылки, которые вы можете написать в своем шаблоне почты link_to "show", root_url(:protocol=>'https') , обратите внимание, что это должно быть whatever_url , а не whatever_path

2. Очень полезно. Похоже, это общая проблема ActionMailer, не ограничивающаяся Devise. Установите ActionMailer::Base.default_url_options равным {:protocol => ‘https’}, даже если вы используете force_ssl глобально в своем приложении.

Ответ №2:

Чтобы установить протокол, а также подкаталог :

 config.action_mailer.default_url_options = {
        :host => "www.example.com",
        :protocol => 'https',
        :only_path => false,
        :script_name => "/app" #add this attribute if your app is deployed in a subdirectory
    }
  

Источник

Комментарии:

1. www не включается в URL