2011-07-06 4 views
21

내가 인증 코드가 있습니다HttpContext.User.Identity는 언제 설정됩니까?

var authTicket = new FormsAuthenticationTicket(/*blahblah....*/); 
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, 
          FormsAuthentication.Encrypt(authTicket)); 
Response.Cookies.Add(cookie); 
var name = HttpContext.User.Identity.Name; // line 4 

디버그 문에 둬서을, 나는 4 호선 name이 비어있는 것을 찾을 수 있습니다. 그러나 다음에이 브라우저 세션에서 전화를 걸면 HttpContext.User.Identity.Name이 올바르게 설정됩니다.

언제이 값이 설정됩니까? 다음 회원을 사용하는 경우,

FormsAuthentication.Authenticate(name, password) 

또는 : 당신 중 하나처럼 보이는 코드에서

+0

그냥 왜 수동으로 쿠키를 만들고 응답을 FormsAuthentication.SetAuthCookie()? –

+0

또한 Auth 쿠키를 설정하려는 경우 HttpContext에서 사용자 이름을 가져와야하는 이유가 궁금하십니까? 확실하게 인증 쿠키를 설정하려는 경우 -이 사람을 "로그인 한"것으로 설정한다고 말하면서 사용자 이름을 모르는 경우 어떻게 할 수 있습니까? –

+1

@ 닉 - 이유는 이것이 일련의 발전된 최신 버전이기 때문에 여기에서 다시 확인할 수 있습니다. http://stackoverflow.com/q/6586156/7850 –

답변

18

가 HttpContext.User.Identity.Name이 설정됩니다 지정된 Request가 인증 쿠키를 포함하고있는 경우. 귀하의 경우 브라우저가 응답하기 위해 쿠키가 방금 추가되었습니다. 브라우저는 다음 요청에 쿠키가 있으면 추가합니다.

+0

이제 내가 생각했을 것이다. 나는 당신이 묘사하고있는 것과 일치하지 않는 행동을 경험하고 있다는 것을 제외하고는. 여기를 참조하십시오 : http://stackoverflow.com/q/6586156/7850 –

+0

와우, 친구. 그건 당신이 거기있는 진정한 수수께끼 같은 문제 인 것 같지만, 대화에서 모여 들자면, 로그인 후에도 공중 클라이언트 내에서 응답과 함께 쿠키가 전송됩니다. 나는 당신의 초기 문제를 도울 수 있는지 알아 보려고 노력할 것입니다. – tehshin

+0

은 폼 인증과 Windows 인증 모두에서 설정된 인증 쿠키이거나 그냥 인증을 형성합니까? – MacGyver

2

호출해야

Membership.ValidateUser(name, password) 
+0

고마워요,하지만 그건 제가 묻는 것이 아닙니다. .. –

관련 문제