如何在Zotonic中强制执行密码复杂性规则?

时间:2010-10-05 14:57:53

标签: zotonic

我想在Zotonic中强制执行密码策略。我的第一印象是将其作为身份编辑器中new_password字段的验证器。

以下是一个示例政策:

  • 长度至少为8个字符
  • 至少有一个大写字母
  • 至少有一个小写字母
  • 至少有一个号码
  • 至少有一个非字母数字字符
  • 不基于帐户名称

这是一个可能的实现(未经测试):

string:length(Password) >= 8 andalso
re:run(Password, "[A-Z]") =/= nomatch andalso
re:run(Password, "[a-z]") =/= nomatch andalso
re:run(Password, "[0-9]") =/= nomatch andalso
re:run(Password, "[^A-Za-z0-9]") =/= nomatch andalso
re:run(Password, AccountName) =:= nomatch

如何在Zotonic中强制执行密码复杂性规则?

2 个答案:

答案 0 :(得分:1)

您可以做的是将其作为表单验证来实现。与其他验证一致。

我想知道是否有可用的javascript来显示密码强度。 (就像交通信号灯,绿色确定,红色确实不行。)

可以使用{% validate %} scomp。

附加验证

可以通过制作单个正则表达式并使用format验证程序http://zotonic.com/documentation/634/format

将其附加到密码字段来完成简单的密码检查

对于您提议的功能或“红绿灯”功能,最好制作自定义验证器。或者我们添加了对LiveValidation的自定义验证器的支持,然后您可以通过Javascript函数进行检查。

答案 1 :(得分:0)

我的同事指着我:

^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

原作者可在http://davidhayden.com/blog/dave/archive/2004/09/25/501.aspx获得完整的解释。

在Zotonic中使用时有一个小错误(可能是由于re模块中的怪异)所以我将\d更改为[0-9]并将所需长度减少到8:

^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

可以通过替换状态验证程序在_action_dialog_set_username_password.tpl中应用它:

{% validate id="new_password" type={presence} %}

使用格式验证程序 Marc W How do you enforce password complexity rules in Zotonic?中描述:

{% validate id="new_password" type={format pattern="^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$"} %}