2013-02-14 12 views
14

MVC4 기반 Windows 인증을 사용하는 인트라넷 응용 프로그램이 있습니다. 나는 컨트롤러에 인증 목적으로 WindowsIdentity가 필요한 경우Windows 인증 및 Asp.Net 웹 API

난 그냥

HttpContext.User.Identity 

가 지금은 일부 Ajax 호출에 대한 새로운 Asp.Net WebAPI를 사용하고자 사용합니다.

MVC 컨트롤러에서와 같은 쉬운 방법으로 WindowsIdenty 개체를 가져 오는 방법이 있습니까?

답변

24

컨트롤러에서 HttpContext을 참조하지 마십시오.

컨트롤러 User 속성에 액세스 할 수 있습니다.이 속성은 HttpContext에 대한 참조없이 참조 번호에 액세스하는 방법입니다.

가이 컨트롤러 User 속성은 쉽게 조롱 때문에 단위 테스트를 할 수 있습니다 추상화의 수준을 제공하는 이유

public class MyController : ApiController 
{ 
    public string Get() 
    { 
     var indenty = this.User.Identity; 
    } 
} 

. 이러한 추상화는 또한보다 큰 이식성을 허용한다. 이것이 WebApi Self Host라면 HttpContext에 대한 액세스 권한조차 없습니다.

단위 테스트 및 모의 사용자 속성에 대한 자세한 내용을 보려면 here을 읽으십시오. 자세한 내용은 다음을 참조하십시오. 이식성은 here입니다.

+2

하나의 작은 설명 : ID를 사용하려면 User.Identity – agez

+0

을 사용하십시오. 업데이트되었습니다. 감사합니다. –

+1

답변의 명확성에 감사 드리며, 컨트롤러에서 HttpContext를 참조하지 않는 이유를 설명하면 모든 사람의 윤곽을 드러 낼 수 있습니다. – dansan