0

アクティブな管理者がパスワードを忘れたときに送信されたパスワードのリセット リンクを生成すると、パスワードを変更してダッシュボードにログインできますが、同じリンクを使用してパスワードを変更しようとすると、何も行われず、同じページにリダイレクトされます。空のパスワードを入力してもエラーは表示されません。トークンの有効期限が切れているというエラーを表示したい

フォームを送信するたびに同じログが生成されます。

AdminUser Load (0.6ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."reset_password_token" = '14ad4bc9d075cbb5ed8057c9518848e448e56beab6430ff1d3c7459771a79662' ORDER BY "admin_users"."id" ASC LIMIT 1 [["reset_password_token", "14ad4bc9d075cbb5ed8057c9518848e448e56beab6430ff1d3c7459771a79662"] ] method=PUT path=/admin/password format=html controller=ActiveAdmin::Devise::PasswordsController action=update status=200 duration=606.45 view=570.88 db=0.64 time=2016-07-26 12:25:20 UTC category=web ip=127.0.0.1 params={"admin_user"=>{"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "reset_password_token"=>"[FILTERED]"} 、「コミット」=>」パスワードを変更してください"}

200 ステータスを与える理由がわかりません。どこから調べればよいでしょうか?

4

1 に答える 1

0

deviseupdateメソッドをオーバーライドし、Devise::PasswordsControllerエラーを表示する行を追加しました。基本的にfalse の場合、エラーは表示されません。flash[:error] = resource.errors.full_messages.to_sentenceresource.errors.empty?

ここに更新された方法があります

 # PUT /resource/password
  def update
    self.resource = resource_class.reset_password_by_token(resource_params)
    yield resource if block_given?

    if resource.errors.empty?
      resource.unlock_access! if unlockable?(resource)
      if Devise.sign_in_after_reset_password
        flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
        set_flash_message(:notice, flash_message) if is_flashing_format?
        sign_in(resource_name, resource)
      else
        set_flash_message(:notice, :updated_not_active) if is_flashing_format?
      end
      respond_with resource, location: after_resetting_password_path_for(resource)
    else
      flash[:error] = resource.errors.full_messages.to_sentence
      set_minimum_password_length
      respond_with resource
    end
  end
于 2016-07-28T06:50:06.247 に答える