如何在ASP.Net MVC身份2中更改密码验证 - 第2部分

时间:2016-09-05 22:17:37

标签: c# asp.net-mvc validation asp.net-identity

在有人提出这个问题与以下链接相同之前:

How To Change Password Validation in ASP.Net MVC Identity 2?

我想向人们保证,这更像是这个问题的延续。

我进入IdentityConfig.cs作为建议的上述链接的第一个答案,并更改了所有选项,如下所示:

        manager.PasswordValidator = new PasswordValidator
        {
            RequiredLength = 2,
            RequireNonLetterOrDigit = false,
            RequireDigit = false,
            RequireLowercase = false,
            RequireUppercase = false,
        };

接下来,如第二个答案所示,我也进入了AccountViewModels.cs类并更改了那里设置密码最小长度的2个位置。我再次将它从6设置为2(在这两个地方它都出现在文件中。

    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)]

然后我继续在整个解决方案中搜索“必须至少”这个短语。我找到了另外一个类:ManageViewModels.cs,再次在两个地方出现了我改变了两个地方的最小长度设置,从6到2,就像上面一样。

我正在尝试在Startup.cs中设置一些默认角色和一个超级用户(我个人不会这样做,但我只是关注一篇关于保护我的CMS的文章)。其中一个步骤就是这个。

在我的Startup.cs中,我有以下简单的代码:

        //Here we create a Admin super user who will maintain the website                        
        var user = new ApplicationUser();
        user.UserName = "super";
        user.Email = "super@krypton.com";
        string userPWD = "1234";
        IdentityResult chkUser = UserManager.Create(user, userPWD);

        //Add default User to Role Admin
        if (chkUser.Succeeded)
        {
            IdentityResult result1 = UserManager.AddToRole(user.Id, "Admin");
        }

它应该工作。但是当我打破它并将鼠标悬停在chkUser变量上时,我发现我收到一条错误消息“密码必须至少6个字符。”。

即使在更改了所有验证逻辑后,它也应该是2个字符。

所以我的问题是:是否有另一个位置还有更多验证逻辑?此外,是否有一个地方我可以提取所有这些验证逻辑(如果是这样,有人可能建议一个或两个这样的资源的链接或提供如何处理它的建议。)

1 个答案:

答案 0 :(得分:0)

您可以获得的唯一链接是PasswordValidator的源代码。在这里:http://aspnetidentity.codeplex.com/SourceControl/latest#src/Microsoft.AspNet.Identity.Core/PasswordValidator.cs

只有它真正做它应该做的事情。我只能猜测您将PasswordValidator分配给错误的UserManager实例,并且未设置您设置的设置。

您可以做的是复制PasswordValidator的源代码,将其粘贴到您的代码库中,然后在调试模式中逐步执行,找出需求的来源。