0

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

我试过像这样在 Authentication::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。

4

2 回答 2

0

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

validates_length_of :password, :within => 6..40, :if => :password_required?
于 2010-04-20T12:46:52.783 回答
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
于 2010-04-20T13:18:04.507 回答