0

我想在 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 中执行密码复杂性规则?

4

2 回答 2

1

您可以做的是将其实现为表单验证。沿着其他验证的思路。

我想知道是否有可用的 javascript 显示密码强度。(就像红绿灯一样,绿色可以,红色真的不行。)

可以使用{% validate %}scomp 附加验证。

可以通过创建一个正则表达式并使用format验证器 将其附加到密码字段来完成简单的密码检查http://zotonic.com/documentation/634/format

对于您提出的功能或“红绿灯”功能,制作自定义验证器可能会更好。或者我们添加对 LiveValidation 的自定义验证器的支持,然后您将 Javascript 函数传递给该验证器进行检查。

于 2010-10-05T17:35:57.410 回答
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您如何在 Zotonic 中强制执行密码复杂性规则?

{% validate id="new_password" type={format pattern="^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$"} %}
于 2010-10-06T14:37:13.320 回答