2012-01-27 15 views
3

私はRailsアプリケーションでDeviseとRack :: SSLEnforcerを使用しています。Rack :: SSLEnforcerの使用時にDevise確認リンクからHTTPSを削除します

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

リンクが自動生成された考案のconfirmation_url法である:ユーザーが自分の確認メールを受信したら、それはのようになります。

このリンクには、ポート443が接続されていてはなりません。理論的には、httpsアドレスにリンクする必要はありませんが、それがあれば問題ありません。最低でも、最後のポート443ではなく、前面でhttpsにする必要があります。

アイデア?

+0

をプロトコルは 'HTTPSでなければなりません:// '本当にSSLの場合。 – Teddy

+0

URLは自動生成されています - これを指定する必要があります - 私は質問を更新しました。 – ideaoforder

答えて

6

この問題は、Deviseビューをインストールし、生成されるリンクをカスタマイズすることで解決しました。このコマンドで考案・ビューをインストールすることができます。

rails generate devise:views 

あなたがこれを行うとき(あなたの特定の状況に応じて)いくつかの他のものをカスタマイズする必要があるかもしれませんので、工夫のマニュアルを必ずお読みください。その完全で

、あなたは今、リンクは常にSSLとして生成するようにするには

app/views/devise/mailer/confirmation_instructions.html.erb 

でファイルを編集することができ、ちょうどlink_toコールカスタマイズ:URLで

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

これはうまくいくようです。理論的には、グローバルな方法でそれを無効にする方法があればうれしいですが、これは私の問題を解決しました。ありがとう! – ideaoforder

関連する問題