Asp.net-Mvc

Asp.net Identity 2.0 - 獨特的電子郵件

  • August 2, 2018

我的應用程序是 MVC5,我嘗試使用以下方法允許重複的電子郵件地址:

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。它不起作用,頁面被重定向到登錄頁面!我的問題是我是否可以僅針對此操作允許重複電子郵件,以及為什麼我被重定向到登錄頁面?

如果您使用預設的 MVC 5 項目模板,**正確的方法是在註冊控制器中IdentityConfig.cs**而不是在註冊控制器中設置規則。

打開App_Start\IdentityConfig.cs並編輯這一行:

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>....

您必須在 configureservices 中添加以下行

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
           {
               options.User.RequireUniqueEmail = false;

           })
           .AddEntityFrameworkStores<ApplicationDbContext>()
           .AddDefaultTokenProviders();

引用自:https://stackoverflow.com/questions/27515561