如何在 ASP.Net MVC Identity 2 中更改密码验证?

Posted

技术标签:

【中文标题】如何在 ASP.Net MVC Identity 2 中更改密码验证?【英文标题】:How To Change Password Validation in ASP.Net MVC Identity 2? 【发布时间】:2014-09-07 21:45:23 【问题描述】:

如何在 ASP.Net MVC5 Identity 2 中更改密码验证?

谢谢

【问题讨论】:

好吧,默认情况下,asp.net MVC 注册表单数据注释适用于客户端站点验证。这很好。但是在提交表单后,这个验证就来了。 “密码必须至少有一个非字母或数字字符。密码必须至少有一个小写字母('a'-'z')。密码必须至少有一个大写字母('A'-'Z')。”但我找不到这个消息验证码来修改自己。我该如何改变它? 更新:ASP.Net MVC5 Identity2视频教程youtube.com/playlist?list=PLQYI2ou09WiRPs55DJ9Q4rxGSgSMNCvNx 【参考方案1】:

在VS2013 Update 2的MVC项目模板中,应该有一个名为App_Start/IdentityConfig.cs的文件。在其中您应该找到类ApplicationUserManager 和一个名为Create() 的静态工厂方法。这就是配置用户管理器类的地方,包括定义密码的服务器端验证规则。例如:

manager.PasswordValidator = new PasswordValidator

    RequiredLength = 6,
    RequireNonLetterOrDigit = true,
    RequireDigit = true,
    RequireLowercase = true,
    RequireUppercase = true,
;

【讨论】:

需要注意的是,您列出的默认规则将导致密码Test123 出现错误,并显示“密码必须至少包含一个非字母或数字字符”。这是非常具有欺骗性的,因为似乎如果RequireNonLetterOrDigitRequireDigit 都是true,那么RequireDigit 会窃取数字文本并强制密码验证失败,然后告诉用户做他们已经做过的事情。跨度> RequireNonLetterOrDigit = 密码要求的字符不是字母也不是数字。 如何覆盖返回的错误文本? 在新的 ASP.NET 5 中,找不到对应的方法。您能建议任何其他可行的方法吗? @It'satrap - 在 Startup.cs 中有一个名为 ConfigureServices 的方法。在那里你想要修改 services.AddIdentity 调用: services.AddIdentity(x => x.Password.RequiredLength = 6; x.Password.RequireUppercase = false; x.Password.RequireLowercase = false; x.Password.RequireNonAlphanumeric = false; ) .AddEntityFrameworkStores() .AddDefaultTokenProviders();【参考方案2】:

除了Anthony Chu的回答,

您可能还需要在 Models 文件夹 > AccountViewModel.cs > class RegisterViewModel(以及 class ResetPasswordViewModel)中进行更改

更改“MinimumLength = 6”(需要向右滚动)

 [Required]
 [StringLength(100, ErrorMessage = "The 0 must be at least 2 characters long.", MinimumLength = 6)]
 [DataType(DataType.Password)]
 [Display(Name = "Password")]
 public string Password  get; set; 

【讨论】:

就我而言,上面提到的代码位于ApplicationUserManager.cs 中,位于Model 文件夹中。 我已经设置了一些选项来在 Startup.cs 文件中添加一个用户。其中一部分是设置用户密码。在此处设置时,即使更改了此答案和 Anthony 的答案中的详细信息。我仍然要求将密码设置为 6 个字符长。即使在这两个地方(以及 ManagerViewModels.cs SetPasswordViewModel 和 ChangePasswordViewModel 类我都将它们设置为 2。还有另一个地方可以完成此检查。我使用的是 VS2015?

以上是关于如何在 ASP.Net MVC Identity 2 中更改密码验证?的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net core MVC6如何在Identity 3中初始添加角色

如何将 ASP.NET Identity 实现到一个空的 MVC 项目

如何在现有数据库 ASP.NET Core MVC 和 EF Core(DB-First)中使用 Identity

[ASP.NET MVC] ASP.NET Identity登入技术剖析

ASP.NET MVC Identity 添加角色

asp.net identity 3.0.0 在MVC下的基本使用 序言