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

3
我在一个Rails应用中使用Devise和Rack :: SSLEnforcer。当用户收到他们的确认电子邮件时,它看起来像这样:

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

该链接是由Devise的confirmation_url方法自动生成的。
这个链接不应该有端口443附加在它上面。理论上,我不需要链接到https地址,但如果可以的话,也没关系。最少应该是以https开头,而不是以端口443结尾。
有什么想法吗?

如果确实是SSL,URL中的协议应该是 https:// - Teddy
URL是自动生成的 - 我应该指出这一点 - 我已经更新了问题。 - ideaoforder
1个回答

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") %>

这似乎起作用了。理论上,全局禁用附加的443是很好的,但这对我解决了问题。谢谢! - ideaoforder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接