2013-08-29 5 views
0

저는 작업중인 프로젝트가 있습니다. Thinktecture Identitity Server를 사용하여 응용 프로그램에 토큰을 전달합니다. 문제는 토큰에서 클레임 값을 추출해야하는데 지금까지 클레임 값을 얻기 위해 Linq 쿼리를 수행 할 수있었습니다 (디버그를 통해 결과에서 볼 수 있습니다). 그러나 실제 값을 꺼낼 수는 없습니다. , 나는 문자열, toarray 등을 시도했다. 그것은 나에게 실제 타입을주고있다. 내 코드는 다음과 같습니다 :클레임 기반 ID

var company = ClaimsPrincipal.Current.Identities.ToArray(); 
     var claimType1 = company[0].Claims.ToArray(); 
     var claimtest = from x in claimType1 where x.Type == "http://identityserver.thinktecture.com/claims/profileclaims/company" select x.Value; 
     String claimfinal = claimtest.ToString(); 
     ViewBag.Message = claimtest.GetType().ToString() + " " + claimfinal; 

을이 출력입니다 : 참고로

System.Linq.Enumerable+WhereSelectArrayIterator`2[System.Security.Claims.Claim,System.String] System.Linq.Enumerable+WhereSelectArrayIterator`2[System.Security.Claims.Claim,System.String] 

: 이는 테스트 목적으로 컨트롤러에 있습니다. 이상적으로는 청구를 처리하고

답변

3

claimtest, 당신은 아마도 지정된 유형의 첫 번째 주장을 선택한 다음 그 값을 사용하기를 IEnumerable하고자하는 별도의 배경 클래스에서의 다양한 정보를 저장할 수 있도록하려면 :

var claimtest = claimType1 
    .First(x => x.Type == "http://identityserver.thinktecture.com/claims/profileclaims/company") 
    .Value;   
+0

대린, 완벽하게 감사드립니다. – user60812

관련 문제