验证Authlogic中的密码格式

时间:2010-02-02 19:07:10

标签: ruby-on-rails validation format passwords authlogic

有没有办法让Authlogic验证密码的格式,例如必须包含至少一个字母和至少一个数字?省略validates_format_of_password_options配置块中使用的acts_as_authentic方法似乎表明Authlogic认为不应该对一个用户施加这样的约束。

我想我会简单地放入一个正常的ActiveRecord validates_format_of :password,但这意味着我构建的current_user对象本身就是无效的,因为我无法检索明文密码(并且不会即使我可以将它存储在那个对象中!)。在检测到我的current_user无效后,Rails或Authlogic(不确定哪个,因为我对两者都很新)将我引导到我的“编辑用户”页面,其密码验证错误。

2 个答案:

答案 0 :(得分:7)

不需要猴子修补,但不会与任何未来的Authlogic更改挂钩。只需将其添加到您的用户模型:

validates_format_of:password,:with => /^(?=。 \ d)(?=。([az] | [AZ]))([。x20- \ x7E]){6,40} $ /,:if = > :require_password?,:message => “必须包含一个数字,一个字母,并且在6到40个字符之间”

当然,您可以更改正则表达式以满足您的需求。

答案 1 :(得分:3)

您可以使用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.

如果您转到gem中的模块,您可以看到它们提供的其他选项。例如,如果我想更改密码长度验证的默认选项:

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

您可以查看“(gems || plugins)/ authlogic / acts_as_authentic /”目录中的acts_as_authentic文件夹以获取更多选项。干杯!