2010-02-02 2 views
5

Есть ли способ получить Authlogic для проверки формата пароля, например, должен содержать хотя бы одну букву и хотя бы одно число? Отсутствие метода validates_format_of_password_options, который будет использоваться в блоке конфигурации acts_as_authentic, как представляется, указывает на то, что Authlogic придерживается мнения, что не следует налагать такое ограничение на своих пользователей.Проверка формата пароля в Authlogic

я думал, что просто положить в нормальный ActiveRecord validates_format_of :password, но это означает, что current_user объект, который я строю, по своей сути недействительным, так как я не могу восстановить пароль открытым текстом (и не будет хранить его в этом объекте даже если бы я мог!). После обнаружения того, что мой current_user недействителен, Rails или Authlogic (не уверен, что, поскольку я довольно новичок в обоих), перенаправляет меня на мою страницу «редактировать пользователя» с ошибкой проверки пароля.

ответ

2

Вы можете использовать параметры конфигурации, данные acts_as_authentic следующим образом:

# Configuration is easy: 
    # 
    # acts_as_authentic do |c| 
    #  c.my_configuration_option = my_value 
    # end 
    # 
    # See the various sub modules for the configuration they provide. 

Если вы идете модули в жемчужине вы можете увидеть дополнительные возможности, которые они предоставляют. Например, если я хочу, чтобы изменить параметры по умолчанию проверки длины установлен пароль:

acts_as_authentic do |c| 
c.merge_validates_length_of_password_field_options({:minimum => 3}) 
end 

Вы можете заглянуть внутрь acts_as_authentic папки в ваших «(драгоценные камни || плагинов)/authlogic/acts_as_authentic /» каталог для дополнительных опций. Ура!

+1

У меня уже есть 'merge_validates_length_of_password_field_options' в моем блоке конфигурации и работает как ожидалось. Моя проблема заключается в том, что подобный метод не существует для формата поля пароля, как для полей входа и электронной почты. – hynkle

+0

Вы всегда можете обезвредить его. :-) – westoque

+0

Просто заплатала - довольно короткая! Работает отлично. – hynkle

7

не требует патча обезьян, но не привязан к каким-либо последующим изменениям в Authlogic. Просто добавьте в модели пользователя:

validates_format_of: пароль,: с =>/^ (?. = \ г) (?. = ([AZ] | [AZ])) ([\ x20- \ x7E]) {6,40} $ /,: if =>: require_password ?,: message => "должно содержать одно число, одну букву и быть между 6 и 40 символами"

Конечно, вы можете изменить regex, чтобы удовлетворить ваши потребности.

+0

отлично работал для меня! – dalyons

+1

На самом деле, мне пришлось немного изменить его: '/^(?=.*\d)(?=.*([az]|[AZ]))([\x20-\x7E]){6, } $/' – dalyons