요즘에는 대부분의 사용자 이름이 전자 메일이기 때문에이 문제를 고수했지만 별도의 전자 메일 필드의 이유를 이해할 수 있습니다. 이것들은 순전히 내 생각 / 경험이며 Microsoft의 말을 찾을 수 없었습니다.
Asp Identity는 순전히 누군가를 식별하기위한 것이므로 식별 할 이메일이있을 필요는 없지만 ID의 일부를 형성하기 때문에이를 저장할 수 있습니다. Visual Studio에서 새 웹 프로젝트를 만들 때 인증 옵션에 대한 옵션이 제공됩니다.
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에서 좋은 지시 / 지시를 제공합니다 (그리고 깨끗한 방법). Microsoft.OWIN 컨텍스트로 응용 프로그램을 부트 스트랩 할 때 App_Start \ Startup.Auth.cs 내에서 정적 생성 메서드가 사용되기 때문에 깔끔합니다.
이 접근 방식의 유일한 단점은 이메일을 두 번 저장하게된다는 것입니다 .... 좋지 않습니다!
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;