使用restful authentication更改最小密码长度

时间:2010-04-20 12:19:21

标签: ruby-on-rails ruby restful-authentication

有没有办法用restful_authentication更改密码的最小长度?目前它是6个字符,我需要另一个值。

我已尝试在此类

之前和之后调用valid :: ByPassword之前调用validates_length_of
validates_length_of :password, :within => 4..40, :if => :password_required?  
include Authentication::ByPassword

并且像这样:

include Authentication::ByPassword
validates_length_of :password, :within => 4..40, :if => :password_required?  

但最低密码保持在6。

2 个答案:

答案 0 :(得分:0)

转到vendor / plugins / restful-authentication / lib / authentication / by_password.rb并编辑此字符串

validates_length_of :password, :within => 6..40, :if => :password_required?

答案 1 :(得分:0)

ActsAsAuthentic有如下配置选项:

acts_as_authentic do |config|
  config.merge_validates_length_of_password_field_options       :within => 4..40
  config.merge_validates_confirmation_of_password_field_options :within => 4..40
end

不幸的是,RestfulAuthentication没有这些配置选项。 正确的解决方案是分叉RestfulAuthentication项目并添加它们。

与此同时,你可以修补Authentication::ByPassword.included

# in app/models/user.rb:
Authentication::ByPassword.class_eval do
  def self.included(base)
    recipient.extend(ModelClassMethods)
    recipient.class_eval do
      include ModelInstanceMethods

      # Virtual attribute for the unencrypted password
      attr_accessor :password
      validates_presence_of :password, :if => :password_required?
      validates_presence_of :password_confirmation, :if => :password_required?
      validates_confirmation_of :password, :if => :password_required?
      validates_length_of :password, :within => 4..40, :if => :password_required?
      before_save :encrypt_password
    end
  end
end