Sono stato anche bloccato con questo perché la maggior parte delle volte i nomi utente sono messaggi di posta elettronica in questi giorni, tuttavia posso capire il ragionamento di un campo di posta elettronica separato. Questi sono puramente i miei pensieri / esperienze poiché anche io non sono riuscito a trovare l'opinione di Microsoft su questo.
Ricorda, Asp Identity serve puramente per identificare qualcuno, non devi avere un'e-mail per essere identificato ma ci permettono di memorizzarlo perché fa parte di un'identità. Quando crei un nuovo progetto web in Visual Studio, ti viene offerta l'opzione per le opzioni di autenticazione.
Se si seleziona un tipo di progetto non vuoto come MVC e si imposta l'autenticazione su "Account individuali", vengono fornite le basi per la gestione degli utenti. Uno dei quali include una sottoclasse simile a questa in 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
}
Ciò che questo ci dice è che Microsoft intende che memorizziamo nomi utente più complessi (fare riferimento a AllowOnlyAlphaNumericUserNames = false), quindi in realtà abbiamo segnali contrastanti.
Il fatto che questo sia generato da un progetto web predefinito ci fornisce una buona indicazione / direzione da Microsoft (e un modo pulito) per permetterci di inserire e-mail per il campo del nome utente. È pulito perché il metodo di creazione statica viene utilizzato all'interno di App_Start \ Startup.Auth.cs quando si avvia l'applicazione con il contesto Microsoft.OWIN.
L'unico lato negativo di questo approccio è che si finisce per archiviare due volte l'e-mail ... Il che non va bene!
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;