在带有Devise 1.51的Rails 3.1.1应用程序中,我希望确认消息中使用的确认链接是https而不是http。因此,在电子邮件中,"确认链接"会指出类似的东西:
https://mysite.com/users/confirmation?confirmation_token=
我尝试添加:
config.to_prepare { Devise::SessionsController.force_ssl }
config.to_prepare { Devise::RegistrationsController.force_ssl }
config.to_prepare { Devise::ConfirmationsController.force_ssl }
到config / environments / production.rb
但它没有帮助。有谁知道这样做的正确方法?我知道我可以进入视图:devise/mailer/confirmation_instructions.html.erb
并替换那里的confirmation_url(),但我想知道是否有更好的方法来确保一切都是https(即使我知道我的设置需要)表现很受欢迎)非常感谢。
答案 0 :(得分:10)
我正在使用Rails 3.1.3和Devise 1.5.2并且遇到了同样的问题,但事实证明罪魁祸首是ActionMailer。我不得不将https添加到ActionMailer的default_url_options
在config/environments.production.rb
,我改变了:
config.action_mailer.default_url_options = { :host => 'mysite.com' }
要:
config.action_mailer.default_url_options = { :host => 'mysite.com', :protocol => 'https' }
现在所有Devise的电子邮件(确认,解锁等)都使用https进行任何链接。