使用Rack :: SSLEnforcer时,从Devise确认链接中删除HTTPS

时间:2012-01-27 19:02:54

标签: ruby-on-rails-3 ssl devise

我在Rails应用程序中使用Devise和Rack :: SSLEnforcer。当用户收到确认电子邮件时,它看起来像是:

http://mysite.com:443/users/confirmation?confirmation_token=123456789xxx

该链接由Devise的confirmation_url方法自动生成。

此链接不应附加端口443。从理论上讲,我不需要链接到https地址,但如果是的话就没问题了。至少应该是前面的https,而不是最后的443端口。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

我通过安装Devise视图并自定义生成的链接解决了这个问题。您可以使用以下命令安装Devise视图:

rails generate devise:views

请务必阅读Devise文档,因为在执行此操作时可能需要自定义其他一些内容(具体取决于您的具体情况)。

完成后,您现在可以在

编辑文件
app/views/devise/mailer/confirmation_instructions.html.erb

要使链接始终生成为SSL,只需自定义link_to调用:

<%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token, :protocol => "https") %>