Мне удалось найти решение.Это не самое элегантное решение, но оно решает проблему до тех пор, пока я не пойму, как динамически изменять контекст БД, используемый при входе в систему / регистрации
. В IdentityConfig.cs я переключил «RequireUniqueEmail» на false:
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = false
};
Затем, когда пользователь регистрируется, я беру адрес электронной почты, делаю его уникальным для веб-сайта, на котором он зарегистрирован, и сохраняю его в поле UserName (я нигде не использую UserName).Когда они входят в систему, я делаю то же самое изменение введенного адреса электронной почты перед попыткой входа.
Если этот пользователь регистрируется на другом веб-сайте, имя пользователя будет другим, даже если адрес электронной почты идентичен.Не идеально, но это работает.
Например,
string uniqueCode = "Website_Specific_String";
var user = new ApplicationUser { uniqueCode + model.Email, Email = model.Email};
var result = await UserManager.CreateAsync(user, model.Password);
и логин
var user = await UserManager.FindByNameAsync(uniqueCode + model.Email);
Все еще открыты для лучших идей.Спасибо