Asp.net-Mvc
Asp.net Identity 2.0 - 獨特的電子郵件
我的應用程序是 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();