52

Devise を使用するように Rails 4 アプリケーションをセットアップしていますが、パスワードのリセットで問題が発生しています。メーラーをセットアップしましたが、パスワード リセットのメールは正常に送信されます。提供されたリンクには、正しい reset_password_token が割り当てられており、そのデータベースで確認しました。ただし、正しい形式のパスワードを使用してフォームを送信すると、リセット トークンが無効であるというエラーが表示されます。

ただし、まったく同じコードがローカルで正常に動作しrails sます。メールが送信され、実際にパスワードをリセットできます。私が使用するコードは標準の Devise コードであり、オーバーライドはしていません。

おそらくそれはApacheの何かですか?あまり詳しくありません。誰にもアイデアはありますか?

4

5 に答える 5

131

コードを確認してくださいapp/views/devise/mailer/reset_password_instructions.html.erb

リンクは次のように生成する必要があります。

edit_password_url(@resource, :reset_password_token => @token)

ビューがまだこのコードを使用している場合、それが問題の原因になります。

edit_password_url(@resource, :reset_password_token => @resource.password_reset_token)

Devise はトークンのハッシュの保存を開始したため、電子メールは@token、データベースに保存されているハッシュ値ではなく、実際のトークン ( ) を使用してリンクを作成する必要があります。

この変更は 143794d701 の Devise で発生しまし

于 2013-10-07T23:10:28.397 に答える
0

カスタム確認メーラー ビューを使用している場合は、(@doctororange の投稿 ablve に加えて) 次の点にも注意する必要があります。

ビュー内のリンクもここで変更されました。これは新しいリンク コードです。

<p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>

これは古いリンク コードです。

<p><%= link_to 'Confirm my account', user_confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>
于 2016-07-11T15:45:00.230 に答える