有没有办法让Authlogic验证密码的格式,例如必须包含至少一个字母和至少一个数字?省略validates_format_of_password_options
配置块中使用的acts_as_authentic
方法似乎表明Authlogic认为不应该对一个用户施加这样的约束。
我想我会简单地放入一个正常的ActiveRecord validates_format_of :password
,但这意味着我构建的current_user
对象本身就是无效的,因为我无法检索明文密码(并且不会即使我可以将它存储在那个对象中!)。在检测到我的current_user
无效后,Rails或Authlogic(不确定哪个,因为我对两者都很新)将我引导到我的“编辑用户”页面,其密码验证错误。
答案 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文件夹以获取更多选项。干杯!