如何在 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
出现错误,并显示“密码必须至少包含一个非字母或数字字符”。这是非常具有欺骗性的,因为似乎如果RequireNonLetterOrDigit
和RequireDigit
都是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