2014-12-16 26 views
6

başvurum MVC5, ben şu kullanarak yinelenen e-posta adresini izin çalıştı:Asp.net Kimlik 2.0 - Eşsiz Email

public async Task<ActionResult> AddUser (UserRegisterViewModel userViewModel) 
     { 
     ...... 
      if (ModelState.IsValid) 
       { 
       var user = new ApplicationUser 
       { 
       ...... 
       }; 
       var adminresult = await UserManager.CreateAsync(user); 
       var result = await UserManager.AddToRolesAsync(user.Id, user.Profession); 
       UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) 
       { 
        RequireUniqueEmail = false 
       }; 
       if (adminresult.Succeeded) 
        { 
        .... 
        return RedirectToAction("VisitInfo", "Visit"); 
        } 
       if (!adminresult.Succeeded) 
        { 
        var er = adminresult.Errors.FirstOrDefault(); 
        ViewBag.Error = er; 
        return View(userViewModel); 
        } 

        return RedirectToAction("VisitInfo", "Visit"); 
       }    
      return View(); 
      } 

RequireUniqueEmail = false ekleyerek. Çalışmadı, sayfa giriş sayfasına yönlendirildi! Sorum şu, bu işlem için yalnızca yinelenen e-postalara izin verebilir miyim ve neden giriş sayfasına yönlendiriliyorsunuz?

var adminresult = await UserManager.CreateAsync(user); 
+0

şifre mi:

Açık App_Start\IdentityConfig.cs ve bu satırı düzenleyin? Eğer öyleyse, kullanıcıyı oluşturduktan sonra 'UserValidator' ayarlıyorsunuz. IdentityConfig.cs' –

+0

'a gitmeniz gerekiyor. Teşekkürler Brendan. Bunu yapabilirdim, ancak bu kuralın diğer kayıt formları için yerinde olmasına ihtiyacım var. – hncl

+0

"IdentityConfig.cs" içine yerleştirilirse, site genelinde geçerli olur. Bu haliyle, kullanıcıyı zaten oluşturduktan sonra "RequireUniqueEmail" bayrağını ayarlıyorsunuz. –

cevap

4

sayesinde,

  UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) 
       { 
        RequireUniqueEmail = false 
       }; 

önce taşındı kayıt denetleyicisi. Bütün `AddUser` yöntemi içinde

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 = false //<-- the default is true 
    }; 

    ....<snip>.... 
+0

'RequireUniquePhone = true' ayarıyla bile aynı telefona sahip iki kullanıcım olabiliyordu. –

20

varsayılan MVC 5 proje şablonu kullanıyorsanız, kurallar ayarlamak için uygun yolu IdentityConfig.cs içinde yerine içindedir: Brendan'a

+0

Bu kabul edilen cevap olmalı. – ProfK