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

ide*_*der 3 ssl devise ruby-on-rails-3

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

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

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

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

有任何想法吗?

小智 6

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

rails generate devise:views
Run Code Online (Sandbox Code Playgroud)

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

完成后,您现在可以编辑该文件

app/views/devise/mailer/confirmation_instructions.html.erb
Run Code Online (Sandbox Code Playgroud)

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

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