Utknąłem z tym również, ponieważ obecnie większość nazw użytkowników to e-maile, ale rozumiem uzasadnienie oddzielnego pola E-mail. To są wyłącznie moje przemyślenia / doświadczenia, ponieważ nie mogłem też znaleźć zdania Microsoftu na ten temat.
Pamiętaj, że tożsamość Asp służy wyłącznie do identyfikacji kogoś, nie musisz mieć adresu e-mail, aby zostać zidentyfikowanym, ale pozwalają nam go przechowywać, ponieważ stanowi część tożsamości. Podczas tworzenia nowego projektu internetowego w programie Visual Studio masz możliwość wyboru opcji uwierzytelniania.
Jeśli wybierzesz niepusty typ projektu, taki jak MVC, i ustawisz uwierzytelnianie na „Konta indywidualne”, otrzymasz podstawowe podstawy zarządzania użytkownikami. Jedna z nich zawiera podklasę wyglądającą tak w ramach 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
}
To mówi nam, że Microsoft zamierza przechowywać bardziej złożone nazwy użytkowników (patrz AllowOnlyAlphaNumericUserNames = false), więc tak naprawdę mamy mieszane sygnały.
Fakt, że jest on generowany z domyślnego projektu internetowego, daje nam dobrą wskazówkę / wskazówkę od firmy Microsoft (i przejrzysty sposób), aby umożliwić nam wprowadzenie adresów e-mail w polu nazwy użytkownika. Jest czysty, ponieważ statyczna metoda tworzenia jest używana w App_Start \ Startup.Auth.cs podczas ładowania aplikacji w kontekście Microsoft.OWIN.
Jedyną wadą tego podejścia jest dwukrotne przechowywanie wiadomości e-mail… Co nie jest dobre!
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;