2016-07-30 2 views
0

아래 코드는 현재 인증 된 사용자를 Admin이라는 역할에 할당하기 위해 호출됩니다. 사용자는 올바르게 구성된 전자 메일 주소로 이미 만들어져 있으며이를 통해 인증 할 수 있습니다. 그러나 아래의 데모 코드를 사용하여 역할에 사용자를 추가하려고합니다.사용자 이름이 전자 메일 주소 인 사용자에게 사용자 추가

public ActionResult AddUserToRole() 
{ 
    var userId = User.Identity.GetUserId(); 
    using (var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()))) 
    { 
     IdentityResult result = userManager.AddToRole(userId, "Admin"); 
    } 
    return RedirectToAction("Index"); 
} 

사용자는 새 MVC 5 응용 프로그램의 템플릿 코드를 사용하여 만들어졌습니다. 템플릿 코드는 사용자 이름에 대한 전자 메일 주소를 호출합니다. 그러나, AddToRole 라인의 결과가

사용자 이름 [email protected]의 오류 result.Succeeded = false를 반환하는 것은 유효하지 않습니다 만 문자 나 숫자를 포함 할 수 있습니다.

역할에 대한 호출이 유효성 검사기를 적용하지만 사용자 생성을위한 호출이 아닌 이유는 무엇입니까? 모든 템플릿 코드입니다.

이제 템플릿 코드가 다르기 때문에 뭔가 빠졌는가, 아니면 사용자가 전자 메일 주소가 아닌 사용자 이름을 제공하도록 템플릿을 수정해야합니까?

감사합니다.

+1

그것은 당신의 문맥을 보인다 또는 데이터베이스가 점 및/또는 허용하지 않는 방식으로 구성되어있는 '@'기호가. – DevilSuichiro

+0

중복 http://stackoverflow.com/questions/19460078/configure-microsoft-aspnet-identity-to-allow-email-address-as-username –

+0

사용자 이름이 이메일로 완벽하게 설정되었습니다. 역할에 사용자 만 추가하면 문제가 발생합니다. –

답변

1

동일한 문제가있었습니다.

 userManager.UserValidator = new UserValidator<ApplicationUser>(userManager) { AllowOnlyAlphanumericUserNames = false }; 

누군가가 더 우아한 해결책을 알 수 있지만 나를 위해 일했다, 그래서 나는 더 조사하지 : 그것을 해결하기 위해, AddToRole()를 호출하기 전에, 다음 줄을 추가합니다!

HTH 사용자 이름 속성에

관련 문제