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

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

4
默认情况下,asp.net MVC注册表单数据注释适用于客户端验证,这很好。但是在提交表单后出现了以下验证消息。“密码必须至少有一个非字母或数字字符。密码必须至少有一个小写字母('a' - 'z')。密码必须至少有一个大写字母('A' - 'Z')。 ”但我找不到这个验证代码可以自己修改。如何更改它? - Nazmul Hossain
2
更新:ASP.Net MVC5 Identity2 视频教程 http://www.youtube.com/playlist?list=PLQYI2ou09WiRPs55DJ9Q4rxGSgSMNCvNx - Nazmul Hossain
2个回答

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

5
需要注意的一点是,您列出的默认规则将导致密码Test123出现错误,并显示消息“密码必须至少有一个非字母或数字字符。”这非常令人困惑,因为如果RequireNonLetterOrDigitRequireDigit都为true,那么RequireDigit会夺取数字文本并强制密码验证失败,然后告诉用户做他们已经做过的事情。 - Chris Marisic
3
RequireNonLetterOrDigit = 密码需要包含既不是字母也不是数字的字符。 - user2277469
5
如何覆盖返回的错误文本? - Brian Behm
2
在新的ASP.NET 5中,找不到相应的方法。你能建议其他可行的方法吗? - It's a trap
1
@It'satrap - 在 Startup.cs 文件中,有一个名为 ConfigureServices 的方法。在这个方法中,您需要修改 services.AddIdentity 调用为以下内容:services.AddIdentity<ApplicationUser, IdentityRole>(x => { x.Password.RequiredLength = 6; x.Password.RequireUppercase = false; x.Password.RequireLowercase = false; x.Password.RequireNonAlphanumeric = false; }) .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); - Mike Devenney

16

除了Anthony Chu的答案之外,

您还需要在Models文件夹>AccountViewModel.cs>类RegisterViewModel(以及类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; }

在我的情况下,我在“Model”文件夹中的“ApplicationUserManager.cs”中有上述代码。 - webworm
我已经在Startup.cs文件中设置了一些选项来添加用户。其中之一是设置用户密码。即使在此答案和Anthony的答案中更改了详细信息后,仍然需要将密码设置为6个字符长。尽管在两个地方(以及ManagerViewModels.cs SetPasswordViewModel和ChangePasswordViewModel类中)我都将它们全部设置为2。是否还有另一个地方进行此检查?我正在使用VS2015? - Francis Rodgers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接