UserManager.CreateAsync()需要复杂的密码

时间:2016-01-08 06:06:59

标签: asp.net-mvc

我正在设计一个注册表单并使用ajax将数据发送到服务器。

我的模特:

public class RegisterViewModel
{
    [Required]
    public string Name { get; set; }

    [Required]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Compare("Password")]
    public string ConfirmPassword { get; set; }
}

和行动:

[HttpPost]
[AllowAnonymous]
public async Task<ActionResult> Register(RegisterViewModel model)
{
   if (ModelState.IsValid)    
   {
      var user = new ApplicationUser { UserName = model.Email, Email = model.Email };

      var result = await UserManager.CreateAsync(user, model.Password);

      if (result.Succeeded)
      {
         // do stuff...
      }
   }
}

我的问题:result.Succeeded返回false,并显示错误消息(Passwordhelloworld):

  

密码必须至少包含一个非字母或数字字符。   密码必须至少包含一位数字(&#39; 0&#39; - &#39; 9&#39;)。密码必须有   至少一个大写字母(&#39; A&#39; - &#39; Z&#39;)。

如您所见,我没有将任何正则表达式设置为PasswordConfirmPassword。那我为什么要这样做呢?

1 个答案:

答案 0 :(得分:3)

看起来你正在使用Identity。在IdentityConfig.cs中,您可以在其中配置密码要求。寻找这一部分:

   manager.PasswordValidator = new PasswordValidator
        {
            RequiredLength = 6,
            RequireNonLetterOrDigit = true,
            RequireDigit = true,
            RequireLowercase = true,
            RequireUppercase = true,
        };