2013-11-22 2 views
3

도움이 필요합니다. 현재 인증 된 사용자/ClaimsPrincipal에 대한 액세스 권한을 얻으려면 어떻게해야합니까? 예전에는 HttpContext.Current를 사용할 것이지만, 지금은 잘못된 것처럼 보입니다.CurrentUser/ClaimsPrincipal

답변

0

어떤 컨텍스트에 액세스 하시겠습니까? OAuth2 토큰을 발행하는 웹 API 서비스의 관점에서 대답하겠습니다. 그게 바로 방금 프로그래밍 한 내용입니다. 그것이 귀하의 시나리오가 아니라면, 우리에게 귀하의 세부 사항을주십시오. 당신이 인증 된 사용자가 그래서 당신은 토큰을 발급 할 수 있습니다 원하고, 당신이 OAuthAuthorizationServerProvider를 오버라이드 (override) 한 경우

, 당신은 context가 오버라이드 (override) 된 메소드의 매개 변수입니다 context.Request.User, 그것을 찾을 수 있습니다.

ApiController (ASP.NET 웹 API에서)을 상속하는 클래스에서는 this.User을 검사 할 수 있습니다. OAuth2 토큰에 넣은 ClaimsPrincipal이됩니다.

11

OWIN을 사용하면 OWIN 컨텍스트의 Authentication.User 속성에서 사용자를 찾을 수 있습니다.

OwinContext context = Request.GetOwinContext(); 
ClaimsPrinicipal user = context.Authentication.User; 
// do stuff with user. 

브록 알렌은 post on using cookie authentication with OWIN 있습니다.

+2

사용자 프로필에 추가 한 경우 모든 프로필 정보로 User 개체에 어떻게 액세스 할 수 있습니까? 또는 요청하는 또 다른 방법은 메서드가 'ClaimsPrincipal'개체를 가져 오는 것입니다. 어떻게 'IdentityUser'객체를 완전히 수분 공급할 수 있습니까? UserManager를 통해 가져올 수 있다는 것을 알고 있지만 사용자가 필요할 때마다 해당 메서드를 호출하고 싶지는 않습니다. 그게 유일한 방법인가요? – Bloodhound

3

웹 API 2를 사용하는 경우 신원 검사/할당 요구에 대해 RequestContext.Principal을 사용해야합니다.