2015-10-06 183 views
0

我想让我的密码字段接受空字符串。我正在使用数据库第一种方法,并已更改AspNetUsers表的定义以允许PasswordHash为空。但是在注册期间它说password must be 6 characters。我如何删除此验证。我的项目不包含IdentityConfig.cs课程。我最近更新了Identity到2.2.1。我正在使用MVC。在asp.net身份更改密码验证

更新

我在写AccountController这个功能。

[HttpPost] 
     [AllowAnonymous] 
     public async Task<JsonResult> RegisterUser(string email, string password = "") 
     { 
      var user = new ApplicationUser() { UserName = email }; 
      var result = await UserManager.CreateAsync(user, password); 
      if (result.Succeeded) 
      { 
       await SignInAsync(user, isPersistent: true); 
       return Json("Done", JsonRequestBehavior.AllowGet); 
      } 
      return Json("Error", JsonRequestBehavior.AllowGet); 

     } 

我在result变量中得到验证错误。

+0

使用'MVC' ???? –

+0

是的,我正在使用MVC –

+0

您是否在Models文件夹中看到'AccountViewModel'类? –

回答

1

如果你看看:\ App_Start \ IdentityConfig.cs,在您看到 “创建” 的方法,RequiredLength = 6,你需要修改这个:

public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
     { 
      var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>())); 
      // Configure validation logic for usernames 
      manager.UserValidator = new UserValidator<ApplicationUser>(manager) 
      { 
       AllowOnlyAlphanumericUserNames = false, 
       RequireUniqueEmail = true 
      }; 

      // Configure validation logic for passwords 
      manager.PasswordValidator = new PasswordValidator 
      { 
       RequiredLength = 6, //This is the validation you need to modify. 
       RequireNonLetterOrDigit = true, 
       RequireDigit = true, 
       RequireLowercase = true, 
       RequireUppercase = true, 
      }; 

      // Configure user lockout defaults 
      manager.UserLockoutEnabledByDefault = true; 
      manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); 
      manager.MaxFailedAccessAttemptsBeforeLockout = 5; 

...

希望这个帮助你...

+0

我在quesiton提到,“我的项目不包含'IdentityConfig.cs'类” –

+0

@IrfanWattoo是的,我知道了。但在这种情况下,是什么的UserManager的类型,你的代码吗?如果它的类型是:“ApplicationUserManager”,那么你可以F12,看看它在哪里定义? –

+0

Step Into在该行不起作用,而是显示一个弹出消息并执行一个步骤。但是当我将鼠标悬停在UserManager上时,弹出窗口是:'Microsoft.aspnet.identity.UserManager ' –

0

@Irfan Yousanif,因为你没有IdentityConfig.cs类,你可以按照以下的示例场景我的示例代码写:

var userStore = new UserStore<IdentityUser>(); 
     var manager = new UserManager<IdentityUser>(userStore); 

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


     var user = new IdentityUser() { UserName = UserName.Text }; 
     IdentityResult result = manager.Create(user, Password.Text); 

,如果你想删除整个验证,请评论如下:

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