【问题标题】:Passwords obeying to regular expression rules for Plone 4.3.4遵循 Plone 4.3.4 正则表达式规则的密码
【发布时间】:2014-12-07 21:51:07
【问题描述】:

Plone 4.3.4 发行说明提到了提交 Add default Plone password policy。我真的很想做一些事情,比如说,所有(重置)密码必须至少有 8 个字符,包含一个小写和一个大写字符以及一个数字和一个使用正则表达式的特殊字符。我只能在 pypi 找到这个 bug reportProducts.PasswordStrength

Products.PasswordStrength 的说明似乎非常过时(谈论 Plone 4.1 或 4.2 要求 - 没有关于 4.3 的消息,Plone.org 上的最后一个版本是 4 岁)。有人用成功了吗?

安装 Products.PasswordStrength 是否可行?所以重置密码必须遵守某些正则表达式规则?

【问题讨论】:

  • 从 2013 年 11 月 20 日起,pypi 上的最新版本是 pypi.python.org/pypi/Products.PasswordStrength/0.3.1。我想您必须设置一个开发站点并自己尝试一下。由于它修补了 PAS 的某些部分,因此在 Plone 4.3.x 上可能会失败,但这应该可以修复。

标签: regex passwords plone zope plone-4.x


【解决方案1】:

Regex 不是适合这项工作的工具。虽然我确信它已经完成了。我建议遍历每个字符并根据规则列表检查它,例如(在 php 伪中):

// below rules equate to [0-9]{2,} && [A-Z]{1,} && [a-z]{2,} && [:symbol:]{2,}
rules = [num:2, upper:1, lower:2, symbol:2]

foreach(chars as char){
  if(char == [0-9]) found[num]++;
  if(char == [A-Z]) found[upper]++;
  if(char == [a-z]) found[lower]++;
  if(char == [:symbol:]) found[symbol]++;
}


foreach(rules as key => rule){
  if(found[key] < rule) return false;
}

对我来说,这是验证密码复杂性的最灵活和可维护的解决方案。

【讨论】:

  • 我同意,正则表达式不是这项工作的工具。即使是简单的密码正则表达式也会对大多数用户不可读,但某些策略(例如,要求来自四个类别中的三个的字符)会导致异常冗长和重复的正则表达式。如果您必须在内部实现此功能,请帮自己一个忙,将正则表达式排除在解决方案之外。
  • 坦率地说,这是一个通用的解决方案,但我对如何使用 Plone 4.3.4 做到最好很感兴趣。
  • 我知道这个解决方案不能解决这个问题,但我喜欢这个答案的可读性和可维护性,而不是任何一天的正则表达式乱码......
猜你喜欢
  • 2012-05-30
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
相关资源
最近更新 更多