我们使用标准的 ASP.NET 身份验证提供程序(恰好是 AspNetSqlMembershipProvider),默认密码强度要求对于我们的需求来说有点过高。
我们要求用户输入至少由字母数字组成的密码(即,必须包含字母和至少一个数字,如果用户愿意,可以混合大小写和非字母数字字符)。
谁能建议什么密码强度正则表达式设置可以实现此目的?
另外,如果用户尝试使用的密码未通过正则表达式检查,我们如何控制向用户显示的错误消息?
Note
结果发现,minRequiredNonalphanumericCharacters
属性必须设置为0
,否则此设置将覆盖使用的任何正则表达式
我们刚刚实现了以下表达式来验证 8 到 16 个字符的密码,并包含以下 4 项中的三项:大写字母、小写字母、符号、数字
(?=^[^\s]{8,16}$)((?=.*?\d)(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[^\w\d\s])(?=.*?[a-z])|(?=.*?[^\w\d\s])(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[A-Z])(?=.*?[^\w\d\s]))^.*
各个组件的解释:
- (?=^[^\s]{8,16}$) - 包含 8 到 16 个非空白字符
- (?=.*?\d) - 包含 1 个数字
- (?=.*?[A-Z]) - 包含 1 个大写字符
- (?=.*?[a-z]) - 包含 1 个小写字符
- (?=.*?[^\w\d\s]) - 包含 1 个符号
请注意长度段后面的双括号,稍后在表达式中您将看到几个 |。这允许对允许的 4 种可能的组合进行非此即彼的比较。
写完这篇文章后,我才注意到这个问题是一年多前提出的。由于我在搜索中遇到了这个问题,我希望其他人也可以从我们的解决方案中受益。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)