2012-08-10 2 views
2

ASP.NET 웹 서비스 (asmx)에서 Windows 인증 사용자를 검색하려면 어떻게해야합니까? 이것이 내가 생각할 수있는 일이지만, "System.Web.UI.Page"는 존재하지 않습니다. 그러나 "System.Web.UI.Page"값이 있기 때문에이 aspx 페이지의 코드 뒤에 작동합니다. 참고,이 웹 메서드를 ExtJS 프록시 읽기 요청에서 호출합니다. JavaScript 코드에서 JSON 객체를 요청하고 있습니다.ASP.NET에서 사용자가 웹을 설정 한 후 JSON 요청을받은 웹 서비스 (asmx)에서 Windows Authenticated User.Identity.Name을 가져옴

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false, XmlSerializeString = false)] 
public string GetCurrentUserWindowsLogin() 
{ 
    string windowsLogin = Page.User.Identity.Name; 
    int hasDomain = windowsLogin.IndexOf(@"\"); 
    if (hasDomain > 0) 
    { 
     windowsLogin = windowsLogin.Remove(0, hasDomain + 1); 
    } 
    return windowsLogin; 
} 

답변

7

HttpContext.Current.User.Identity.Name 
+0

처럼 액세스 할 수있는 다른 코드 나 구성이 있는가 필요? 지금은 ""이지만 HttpContext.Current.User.Identity.Name은 빈 문자열입니다. – MacGyver

+0

FYI : ExtJS 프록시 (JSON AJAX 요청)에서 웹 메서드를 호출하고 있는데, 이는 ID가 설정되기 전에 호출 될 수 있습니다. 가능성? 사용자 신원이 설정 될 때까지 JavaScript가 강제로 대기하도록하려면 어떻게해야합니까? – MacGyver

+3

+1 .. 알았어, 알아 냈어. web.config 파일에이 구성이 있지만 Identity를 설정하도록 IIS를 구성해야했습니다. Windows XP> IIS 관리자> 속성> 디렉토리 보안 (탭)> 익명 액세스 편집> "익명 액세스"의 선택을 취소하고 "Windows 통합 인증"을 선택하십시오. 그 후, 그 가치가 나타났습니다. – MacGyver

6
HttpContext.Current.User.Identity.Name