2011-01-19 4 views
6

asp.net 인증을 위해 하위 도메인에 의해 설정된 쿠키를 수동으로 제거하려면 어떻게합니까?수동으로 asp.net 인증 쿠키를 제거하십시오.

쿠키는 setter.test.com;

public ActionResult LogOut() 
{ 
     //Manually remove the cookie created by 3rd party authentication 
      if (Request.Cookies[".ASPXAUTH"] != null) 
      { 
       HttpCookie myCookie = new HttpCookie(".ASPXAUTH"); 
       myCookie.Expires = DateTime.Now.AddDays(-1d); 
       Response.Cookies.Add(myCookie); 
      } 
} 

이 작동하지 않습니다 getter.test.com에서 내 응용 프로그램에서

<authentication mode="Forms"> 
    <forms domain="test.com" loginUrl="Default.aspx" protection="All" path="/" requireSSL="false" timeout="45" name=".ASPXAUTH" slidingExpiration="true" defaultUrl="Default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/> 
</authentication> 

이 (즉, 쿠키 제거) 로그 아웃 내 코드입니다.

답변

4

작은 변화가있어서 이동해야합니다.

public ActionResult LogOut() 
{ 
    //Manually remove the cookie created by 3rd party authentication 
     if (Request.Cookies[".ASPXAUTH"] != null) 
     { 
      HttpCookie myCookie = new HttpCookie(".ASPXAUTH"); 
      myCookie.Expires = DateTime.Now.AddDays(-1d); 
      myCookie.Domain = "test.com"; 
      Response.Cookies.Add(myCookie); 
     } 
} 

도메인이 모두 동일하게 설정되어 있어야합니다. 당신은 단지에 관계없이 도메인의 이름으로 하나 개의 쿠키를 가질 수 있기 때문에

+0

를 참조하십시오 최상위 도메인? –

+0

설정에서 읽거나 특정 방식으로 확인해야합니다. 반드시 쿠키를 가져야합니다. 요청 쿠키에서 가져올 수 있습니다. –

+0

[RFC 6265] (http://www.rfc-editor.org/rfc/rfc6265.txt) 당 4.2.2 절 " 특히, 서버는 쿠키가 만료 될 때, 쿠키가 유효한 호스트, 쿠키가 유효한 경로 또는 쿠키가 설정되었는지 여부에 관계없이 쿠키 헤더만으로는 서버를 확인할 수 없습니다. 보안 또는 HttpOnly 특성. " – HABO

3

, 나는이 작업을 수행하기 위해 권장되는 방법이라고 생각 :

FormsAuthentication.SignOut(); 

내가 하드 코드를 캔트 어떤 경우 http://support.microsoft.com/kb/910443

+0

.something.com 및 www.something.com에 대해 동일한 이름의 쿠키를 사용할 수 있습니다. www 아래에서 SignOut을 호출하면 하나를 삭제하지만 다른 하나는 삭제하지 않습니다. 실화 –

+0

FormsAuthentication이 현재 응용 프로그램에만 적용되지 않습니까? 따라서 www.something.com이 다른 응용 프로그램 루트를 가리키면 다른 로그인을 얻게됩니까? 나 자신을 결코 시도하지 않았다. –

관련 문제