2017-04-06 16 views
1

인증을 위해 IdentityServer 3을 사용하고 있습니다. asp.net ID 프레임 워크를 사용하여 SQL DB에 사용자를 저장하고 있습니다. IndentityServer 팀은 관리자에게 간단한 IdentityManager.AspNetIdentity 라이브러리를 제공하여 사용자를 관리합니다.새 사용자를 만드는 동안 이메일을 null 또는 비워 둘 수 없습니까?

나는 video here을 추적하고 내 응용 프로그램을 구성했습니다. 내가 사용자를 만들려고 할 때

나는 내가 오류

이메일 null 또는 비어있을 수 없습니다 얻을

public class ApplicationUser : Microsoft.AspNet.Identity.EntityFramework.IdentityUser 
{ 
} 

public class ApplicationUserManager : Microsoft.AspNet.Identity.UserManager<ApplicationUser, string> 
{ 
    public ApplicationUserManager(ApplicationUserStore store, IDataProtectionProvider dataProtectionProvider) 
     : base(store) 
    { 
     // Configure validation logic for usernames 
     UserValidator = new UserValidator<ApplicationUser>(this) 
     { 
      AllowOnlyAlphanumericUserNames = false, 
      RequireUniqueEmail = true     
     }; 

     // Configure validation logic for passwords 
     PasswordValidator = new PasswordValidator 
     { 
      RequiredLength = 6, 
      RequireNonLetterOrDigit = true, 
      RequireDigit = true, 
      RequireLowercase = true, 
      RequireUppercase = true, 
     }; 

     // Configure user lockout defaults 
     UserLockoutEnabledByDefault = true; 
     DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); 
     MaxFailedAccessAttemptsBeforeLockout = 5; 

     EmailService = new EmailService(); 
     SmsService = new SmsService(); 

     if (dataProtectionProvider != null) 
     { 
      UserTokenProvider = 
       new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("UserToken")); 
     } 
    }  
} 

아래로 내 자신의 ApplicationUserApplicationUserManager 클래스가 있습니다.

enter image description here

내가 ApplicationUserManagerfalseRequireUniqueEmail을 설정하여이 오류를 제거 할 수 있습니다. 그러나 그건 내 요구 사항이 아닙니다. 나는 유지하려는 RequireUniqueEmail 질문 내가 이메일 주소 필드에 새 사용자 페이지를 만들에 표시받을 수 있나요 어떻게

true에. ApplicationUser은 이미 Email 속성이있는 IdentityUser에서 파생됩니다. 그래서 왜 나타나지 않는가에 대한 새로운 사용자 페이지를 만들지 모르겠다? 1

업데이트 그래서 나는 그러나 그 각도에서 개발, new user in github의 코드 바라 보았다. 나는 각기 다른 구문에 익숙하지 않다. (그리고 모델을보기 위해 전달하는 방법. 새로운 사용자 화면에서 이메일 필드를 사용하려면 소비자 애플리케이션에서 무엇을해야하는지 모르겠다.

답변

0

나는 내 문제를 부분적으로 해결했다.

사용자 만들기 페이지를 보여줍니다 IndetityUser의 필수 속성 (내 경우에는 그것을 IdentityUser에서 파생 ApplicationUser). Email 속성은 IdentityUser 클래스에 있지만 가상. 그래서 나는 단순히 ApplicationUser의 속성을 재정의 할 수 있으며 필요한 추가 속성

public class ApplicationUser : IdentityUser 
{ 
    [Required] 
    public override string Email { get; set; } 
} 

이것은 내가 원하는대로 사용자 페이지 생성에 이메일 필드를 추가합니다. 그러나 내가 사용자를 편집 할 때 이메일 필드를 두 번 보여줍니다. (이 기능은 내부 전용이기 때문에 당분간은 괜찮습니다.)