我正在设计一个注册表单并使用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
,并显示错误消息(Password
为helloworld
):
密码必须至少包含一个非字母或数字字符。 密码必须至少包含一位数字(&#39; 0&#39; - &#39; 9&#39;)。密码必须有 至少一个大写字母(&#39; A&#39; - &#39; Z&#39;)。
如您所见,我没有将任何正则表达式设置为Password
和ConfirmPassword
。那我为什么要这样做呢?
答案 0 :(得分:3)
看起来你正在使用Identity。在IdentityConfig.cs中,您可以在其中配置密码要求。寻找这一部分:
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = true,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = true,
};