닷넷

2012-08-24 2 views
23

에서 가능한 복제를 쿠키를 삭제하는 방법 :
Delete cookie on clicking sign out닷넷

내가 때 사용자 로그 아웃 쿠키를 삭제할

.

여기 내 코드입니다 :

if (HttpContext.Current.Request.Cookies["currentUser"] != null) 
{ 
    DeleteCookie(HttpContext.Current.Request.Cookies["currentUser"]); 
} 


     public void DeleteCookie(HttpCookie httpCookie) 
     { 
      try 
      { 
       httpCookie.Value = null; 
       httpCookie.Expires = DateTime.Now.AddMinutes(-20); 
       HttpContext.Current.Request.Cookies.Add(httpCookie); 
      } 
      catch (Exception ex) 
      { 
       throw (ex); 
      } 
     } 

그러나 그것은 작동하지 않습니다. 어떤 제안이 있으십니까?

+0

'값'을 지우지 않아야한다고 생각합니다. AFAIK, 그것이 쿠키가 식별되는 방법입니다. –

+0

쿠키 삭제는 보조 정리 일뿐입니다. 중요한 부분은 서버 측에서 쿠키 값을 무효화하는 것입니다. – CodesInChaos

답변

48
HttpCookie currentUserCookie = HttpContext.Current.Request.Cookies["currentUser"]; 
HttpContext.Current.Response.Cookies.Remove("currentUser"); 
currentUserCookie.Expires = DateTime.Now.AddDays(-10); 
currentUserCookie.Value = null; 
HttpContext.Current.Response.SetCookie(currentUserCookie); 

작동합니다.

+1

나는 이것이 낡은 대답이라는 것을 알고있다. 그러나 새로 온 사람들을 위해, 쿠키를 제거하는 것이 나중에 아무래도 다시 설정되기 때문에 유용하다고 생각하지 않는다. –

0

HttpContext.Current.Response.Cookies 컬렉션에 쿠키를 추가하십시오 (만료 기한이 있음). 요청은 서버가 전송 된 쿠키를 읽는 것입니다. 응답은 클라이언트에게 쿠키를 다시 보내는 것입니다.

if (Request.Cookies["currentUser"] != null) 
{ 
    Response.Cookies["currentUser"].Expires = DateTime.Now.AddDays(-1); 
} 

(!) 참고를 :

14

대신 쿠키를 추가, 당신은 과거에 값으로 Response's 쿠키를 Expires을 변경해야하는 대신 throw ex 당신은 throw 그것은 스택 트레이스의 유지합니다. C#: Throwing Custom Exception Best Practices

+0

아무 것도하지 않으면 왜 예외를 잡을까요? – Dykam

+0

시도했지만 작동하지 않습니다. 로그 아웃 후에도 사용자 이름을 볼 수 있습니다. httpCookie.Expires = DateTime.Now.AddDays (-1); – cagin

+0

@Dykam : 나중에 기록하거나 원하는대로 할 수 있습니다. 나는 종종 'TODO : 로깅 구현'을 첫 번째 버전에 추가한다. 이런 식으로 try/catch를 추가하면 예외가 발생할 수 있음을 기억하십시오. –

0

아마도 Response.Cookies.Clear() 또는 Response.Cookies.Remove()를 사용할 수 있습니다.

+0

작동하지 않습니다. – cagin

+1

죄송합니다 ... 빠른 검색을 수행하고 이것을 발견했습니다 http://msdn.microsoft.com/en-us/library/ms178195.aspx 이 정보는 유용 할 수 있습니다. –

+0

제 질문에서 알 수 있듯이, 이미 쿠키의 만료 시간을 과거로 설정했습니다. 그러나 같은 결과. – cagin