【问题标题】:How I can add a custom error key in Devise custom authentication strategy?如何在设计自定义身份验证策略中添加自定义错误键?
【发布时间】:2017-08-16 02:37:42
【问题描述】:

必须使 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

【问题讨论】:

    标签: ruby-on-rails authentication devise


    【解决方案1】:

    答案是修改 config/locales/devise.en.yml 但必须添加设置,默认情况下不存在。

    【讨论】:

    • 感谢您的回答。但是你不太明白我的问题。问题不在于错误的翻译,而在于方法Devise::Strategies::DatabaseAuthenticatable#authenticate!的答案格式
    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 2015-05-21
    • 2021-03-23
    • 2022-01-20
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2019-11-03
    相关资源
    最近更新 更多