【问题标题】:How can I override the default validations that come with Authlogic?如何覆盖 Authlogic 附带的默认验证?
【发布时间】:2010-10-05 07:11:24
【问题描述】:

我有自己想要实施的密码/登录规则,例如:

  • 密码:至少一个数字、一个小写字符和一个大写字符
  • 登录名:字母数字,长度在 4 到 15 个字符之间

等等……

目前,当我没有在表单中输入密码并登录时,我收到以下错误(来自 Authlogic 的默认验证):

  • 登录太短(最少 3 个字符)
  • 密码太短(最少 4 个字符)
  • 密码确认太短(最少 4 个字符)

这些验证规则不在我的模型中,它们来自 Authlogic gem。我知道我可以使用以下配置添加:

acts_as_authentic do |config|
  config.validate_password_field = false
end

问题是我找不到这些配置的好文档,当我尝试上述配置以便使用自己的配置时,它抱怨: undefined method 'password_confirmation' for #<User:0x7f5fac8fe7c0>

这样做:

acts_as_authentic do |config|
  config.validate_password_field = false

  # added this so it might stop complaining
  config.require_password_confirmation = true
end

什么都不做。

有没有办法让 Authlogic 要求密码确认而忽略所有其他验证,以便我可以控制它?

【问题讨论】:

    标签: ruby-on-rails authlogic


    【解决方案1】:

    undefined method 'password_confirmation' 可以通过在模型中添加以下行来避免:

    attr_accessor :password_confirmation
    

    如果您想自己处理确认,则只需添加:

    validates_confirmation_of :password
    

    如果您深入研究代码,您会在password.rb 中找到它:

    if require_password_confirmation
      validates_confirmation_of :password, validates_confirmation_of_password_field_options
      validates_length_of :password_confirmation, validates_length_of_password_confirmation_field_options
    end
    

    【讨论】:

    • 成功了,谢谢!同样为了其他人的利益,在 authlogic 配置中添加:validate_login_field false 也会阻止登录 ID 验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多