asp.net-mvc - 密码验证(正则表达式?)

标签 asp.net-mvc regex validation passwords

我需要根据以下要求为用户密码编写一些验证规则。 C# ASP.NET MVC。

Passwords must be 6 - 8 characters
Must include at least one character each from at least three of the following categories:

  1. 大写字母
  2. 小写字母
  3. 数字
  4. 非字母数字字符(例如,!@#$%...)

Must not contain any sequence of 3 or more characters in common with the username
Must not repeat any of the previous 1 passwords
Must be changed if the password is believed to be compromised in any way

目前,我使用 if 语句和循环(尤其是 3 个字符与用户名部分的顺序)编写了一堆非常困惑的验证规则,这些规则目前可以正常使用,但感觉是错误的。我可以采取更好的方法吗?

谢谢

最佳答案

我写了一篇与您所描述的非常相似的文章。它们可以作为正则表达式完成,完成后(至少对我自己而言)这是一项非常有益的成就。

要完成此操作,您将需要使用称为前瞻的正则表达式功能。参见 the informationregular-expression.info 上所有血腥细节的网站。

您需要的第二件事是实时正则表达式测试器,以帮助您制作正则表达式原型(prototype)。我建议你看看 Rubular .创建几个应该有效的密码,以及一些不应该有效的密码,然后从那里开始。

编辑: 详细说明我的上述评论。并非您的每一个要求都可以或应该通过正则表达式来解决。即,您列出的要求:

  • Must not contain any sequence of 3 or more characters in common with the username
  • Must not repeat any of the previous 1 passwords
  • Must be changed if the password is believed to be compromised in any way

可能应该与主密码验证正则表达式分开处理,因为它们是高度上下文相关的。 “与用户名相同的 3 个或更多字符的序列”可能可以在客户端处理。但是,其他两项可能最好留在服务器端处理。

关于asp.net-mvc - 密码验证(正则表达式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116147/

相关文章:

regex - bash:正则表达式提取

php - 验证然后重定向到 Laravel 中的发布路由

javascript - 如何对 TypeScript 类执行 Joi 验证?

php - 在 Woocommerce 注册表中添加一个字段并在管理员中编辑用户

c# - 使用现有数据库中的数据在 ASP.NET MVC 中创建数据库模拟

c# - ASP.NET MVC3 - 使用 Javascript 的错误

c# - 在动态创建的 Html.AutoCompleteFor 中使用 typeahead-mvc-model

asp.net-mvc - 动态调查表的MVC模型

regex - Wordpress - 带有可选参数的自定义重写规则

regex - Perl 正则表达式替换计数