2015-01-09 2 views
0

저는 Owin 보안에 조금 익숙합니다. 각 사용자에 대해 정의 된 특정 역할과 사용자 테이블이있는 레거시 응용 프로그램이 있습니다.Microsoft Owin 보안 - 클레임 생성자 값은 null 일 수 없습니다.

사용자 지정 관리자와 사용자 저장소를 구현하여 해당 테이블을보고 OOTB [Authorize (Roles = "Contributor")] 특성을 사용하여 내 MVC 응용 프로그램에 대한 사용자 권한을 부여하려고합니다.

아래의 고객 사용자 저장소가있는 표준 계정 컨트롤러를 사용하여 아주 기본적인 방법으로 코드를 작성했습니다.

내 문제는 GetRolesAsync 중 하나가 더 이상 해고되지 않았거나이 주장 생성자에서이 도착하기 전에 예외를 받고 있다는 것입니다 :

매개 변수 이름 :

value 
    at System.Security.Claims.Claim..ctor(String type, String value, String valueType, String issuer, String originalIssuer, ClaimsIdentity subject, String propertyKey, String propertyValue) 
    at System.Security.Claims.Claim..ctor(String type, String value, String valueType) 
    at Microsoft.AspNet.Identity.ClaimsIdentityFactory`1.<CreateAsync>d__0.MoveNext() 

어떤 아이디어 왜 것 나는이 신원에 대한 클레임에 정말로 관심이 없기 때문에 갑자기이 예외를 보게된다. 내 사례에서 역할 기반 보안에서 권한 기반 보안으로 옮긴 작업이 일부 변경 되었습니까?

답변

0

나는 그것을 마침내 발견했습니다.

내 ApplicationUser 클래스가 Id를 PersonId로 최근 변경했습니다. OOTB MVC와 Owin은 제대로 설정되지 않은 Id 값을 사용합니다. 이것이 설정되었다는 것을 확인하면이 문제가 해결됩니다.

감사합니다.

관련 문제