簡體   English   中英

如何在Devise自定義身份驗證策略中添加自定義錯誤密鑰?

[英]How I can add a custom error key in Devise custom authentication strategy?

必須進行設計,以使Devise中的授權錯誤以與RubyOnRails中的ActiveModel :: Errors相同的方式起作用,即,該錯誤可通過與字段名稱相對應的鍵在哈希中找到。

我想從服務器獲得這樣的響應{ errors: { user: 'User not found' } }{errors: { password: 'Invalid password' } } ,但是我仍然從{ error: 'User not found' }服務器。

我的自定義策略:

module Devise
  module Strategies
    class Password < Authenticatable

      def authenticate!
        resource  = password.present? && mapping.to.find_for_database_authentication(authentication_hash)

        if resource
          if validate(resource){ resource.valid_password?(password) }
            remember_me(resource)
            resource.after_database_authentication
            success!(resource)
          else
            errors.add(:password, I18n.t('devise.failure.invalid_password'))
            fail!(:invalid_password)
          end
        else
          errors.add(:user, I18n.t('devise.failure.user_not_found'))
          fail!(:user_not_found)
        end
      end

    end
  end
end

答案是修改config / locales / devise.en.yml,但您必須添加設置,默認情況下它們不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM