更改设备确认链接以使用https

时间:2011-12-08 16:15:50

标签: https devise

在带有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(即使我知道我的设置需要)表现很受欢迎)非常感谢。

1 个答案:

答案 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进行任何链接。