2016-06-28 5 views
0

私はアプリケーションでユーザーとロールモジュールを行うためにasp.Identityを使用しています。私はこのようなユーザーを作成しますAsp.NET IDの問題

var user = new ApplicationUser() { UserName = name, Email = email }; 
IdentityResult result1 = ApplicationUserManager.AppUserManager.Create(user, password); 

それはユーザーを作成します、問題は、アプリケーションマネージャーで重複する電子メールをチェックしないことです。私のアプリケーションマネージャは、この

public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
    { 
     var manager = new ApplicationUserManager(new EntityUserStore<ApplicationUser, Account, ApplicationRole, Role>()); 

     AppUserManager = manager; 

     // 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, 
      RequireNonLetterOrDigit = false, 
      RequireDigit = false, 
      RequireLowercase = false, 
      RequireUppercase = false, 
     }; 
     var dataProtectionProvider = options.DataProtectionProvider; 
     if (dataProtectionProvider != null) 
     { 
      manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); 
     } 
     return manager; 
} 

のように見える他のは、私は、ユーザー名を使用してログインあれば、それは動作しますが、私はエマール使用している場合、それはnullを返し、という問題です。

ApplicationUser user = UserManager.FindByEmail(email); // this returns null 

誰もがこの問題に精通していますか?

+0

もし 'result1'がNot Succeededなら' ModelState.AddModelError( ""、 "無効なログイン試行。"); ' –

+0

となるはずですが、電子メールが送信されていなくても成功し、ユニーク – mohsinali1317

+0

電子メールによるログインの問題については、[this](http://stackoverflow.com/questions/27498840/how-to-login-using-email-in-identity-2)を調べることをお勧めします。 –

答えて

1

あなたApplicationUserManager.AppUserManager.CreateあなたはこのようなものであるApplicationUserManagerコンテキストを参照されていないため、電子メールを検証しません:

var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
var signInManager = Context.GetOwinContext().Get<ApplicationSignInManager>(); 
var user = new ApplicationUser() { UserName = name, Email = email }; 
IdentityResult result = manager.Create(user, password); 
if (result.Succeeded) 

上記の例では、VAR managerはなりApplicationUserManagerコンテキストおよび電子メールの検証が含まれていますRequireUniqueEmail = trueによって行われます。