Windows 인증을 사용하는 asp.net 인트라넷 응용 프로그램이 있습니다. 나는 VS 2005로 수년 전에 응용 프로그램을 만들었고 Windows 인증 비트가 완벽하게 작동했습니다.Windows 인증을 사용하여 HttpContext.Current.User를 사용할 수 없습니다.
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
나는 자격 증명이 필요하다는 것을 확인하기 위해 파이어 폭스에서 이것을 테스트, 그리고 실제로 나는 때 처음으로 내 네트워크 자격 증명을 묻는 메시지가 있어요 : - (> system.web 요소 구성 내부) 내 Web.config의 다음과 같은있다 사이트에 액세스하고 유효하지 않은 경우 거부됩니다.
그러나 HttpContext.Current.User.Identity에 액세스하려고하면 개체에 Name 및 AuthenticationType에 대한 빈 문자열이 있고 Authenticated = false가됩니다. interwebs를 둘러보고 WindowsTokenRoleProvider를 활성화해야한다고 생각했는데 아무 것도 변경되지 않았습니다.
<roleManager defaultProvider="WindowsProvider" enabled="true" cacheRolesInCookie="false">
<providers>
<clear/>
<add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider"/>
</providers>
</roleManager>
두 가지 나는 내가이 일을 변환 마법사를 통해 VS 2008 프로젝트를 업그레이드 보았다 마지막 시간 이후 했어, 내 동료가 수도 있지만 나는 또한 몇 달 동안 내려 놔 여기저기서 일했습니다. 나는 내 User.Identity에 영향을 미치는 유일한 것이 위에서 언급 한 web.config의 값이지만, 분명히 잘못된 것을하고 있다고 확신했습니다. 다른 사람이 비슷한 문제가 발생하거나 내가 잘못하고있는 것을 보았습니까? 감사.
IE에서 테스트 해 보셨습니까? –
그래 ... IE에서도 테스트되었습니다. 내가 Firefox를 언급 한 유일한 이유는 IE가 자동으로 자격 증명을 전달하기 때문이며 FF는 프롬프트를 통해 로그인하도록 강제하기 때문입니다. 그것이 내가 익명 액세스를 차단하고 있다는 것을 알 수있는 방법이지만, 여전히 User.Identity에 대한 빈 정보를 얻고 있습니다. – Rich
"HttpContext.Current.User.Identity에 액세스하려고 시도 할 때"라고 말하면 페이지 라이프 사이클의 어느 시점에 너 이거하는거야? – Bullines