#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