Я також застряг у цьому, оскільки більшість часу імена користувачів є електронними листами в ці дні, я можу зрозуміти міркування окремого поля електронної пошти. Це суто мої думки / досвід, тому що я також не міг знайти відповіді на це з боку Microsoft.
Пам'ятайте, що Idp Identity - це суто ідентифікація когось, вам не потрібно мати ідентифікатор електронної пошти, але вони дозволяють нам зберігати його, оскільки він є частиною ідентичності. Коли ви створюєте новий веб-проект у візуальній студії, вам надається можливість налаштування автентифікації.
Якщо ви виберете не порожній тип проекту, такий як MVC, і встановіть автентифікацію на "Індивідуальні акаунти", тоді вам надаються основні основи управління користувачем. Один з яких включає підклас, схожий на це в App_Start \ IdentityConfig.cs:
// Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application.
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store)
: base(store)
{
}
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 = true
};
}
//N.B rest of code removed
}
Це нам говорить про те, що Microsoft має намір зберігати більш складні імена користувачів (див. AllowOnlyAlphaNumericUserNames = false), тому насправді у нас є змішані сигнали.
Той факт, що це генерується за допомогою веб-проекту за замовчуванням, дає нам хорошу вказівку / напрямок від Microsoft (і чистий спосіб), що дозволяє нам вводити електронні листи для поля імені користувача. Це чисто, тому що метод статичного створення використовується в програмі App_Start \ Startup.Auth.cs під час завантаження програми в контексті Microsoft.OWIN.
Єдиною стороною такого підходу є те, що ви в два рази зберігаєте електронну пошту .... Що не добре!
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;