【发布时间】: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