내 웹 사이트에서 사용자가 “로그 아웃”버튼을 클릭하면 Logout.aspx 페이지가 코드와 함께로드됩니다 Session.Clear()
.
ASP.NET/C#에서 모든 쿠키가 지워 집니까? 아니면 내 웹 사이트의 모든 쿠키를 제거하기 위해 추가해야하는 다른 코드가 있습니까?
답변
다음과 같이 시도하십시오.
if (Request.Cookies["userId"] != null)
{
Response.Cookies["userId"].Expires = DateTime.Now.AddDays(-1);
}
그러나 사용하는 것도 의미가 있습니다.
Session.Abandon();
많은 시나리오 외에도.
답변
아니요, 쿠키는 각각의 만료 날짜 를 설정 해야만 정리할 수 있습니다 .
if (Request.Cookies["UserSettings"] != null)
{
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
현재 Session.Clear()
:
Session
컬렉션의 모든 키-값 쌍이 제거됩니다.Session_End
이벤트가 발생하지 않습니다.
로그 아웃 중에이 Session.Abandon
방법을 사용하는 Session_End
경우 이벤트에 대한 방법
도 사용해야합니다 .
- 세션 ID가있는 쿠키 (애플리케이션에서 기본적으로 세션 ID 저장소에 쿠키를 사용하는 경우)가 삭제됩니다.
답변
이것이 내가 사용하는 것입니다.
private void ExpireAllCookies()
{
if (HttpContext.Current != null)
{
int cookieCount = HttpContext.Current.Request.Cookies.Count;
for (var i = 0; i < cookieCount; i++)
{
var cookie = HttpContext.Current.Request.Cookies[i];
if (cookie != null)
{
var expiredCookie = new HttpCookie(cookie.Name) {
Expires = DateTime.Now.AddDays(-1),
Domain = cookie.Domain
};
HttpContext.Current.Response.Cookies.Add(expiredCookie); // overwrite it
}
}
// clear cookies server side
HttpContext.Current.Request.Cookies.Clear();
}
}
답변
안타깝게도 “만료”설정이 항상 작동하는 것은 아닙니다. 쿠키는 영향을받지 않았습니다.
이 코드는 저에게 효과적이었습니다.
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
"ASP.NET_SessionId"
쿠키의 이름은 어디에 있습니까 ? 이것은 실제로 쿠키를 삭제하지는 않지만 나에게 충분히 가까운 빈 쿠키로 덮어 씁니다.
답변
다른 사람들이 말했듯이 Session.Abandon을 사용할 때 세션 ID 쿠키가 제거되지 않는다는 점을 지적하고 싶습니다.
세션을 중단해도 세션 ID 쿠키는 사용자의 브라우저에서 제거되지 않습니다. 따라서 세션이 중단되는 즉시 동일한 애플리케이션에 대한 모든 새 요청은 동일한 세션 ID를 사용하지만 새 세션 상태 인스턴스를 갖게됩니다. 동시에 사용자가 동일한 DNS 도메인 내에서 다른 응용 프로그램을 열면 한 응용 프로그램에서 Abandon 메서드가 호출 된 후에도 사용자의 세션 상태가 손실되지 않습니다.
때로는 세션 ID를 재사용하고 싶지 않을 수 있습니다. 세션 ID를 재사용하지 않는 결과를 이해하고 있다면 다음 코드 예제를 사용하여 세션을 중단하고 세션 ID 쿠키를 지우십시오.
Session.Abandon(); Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
이 코드 예제는 서버에서 세션 상태를 지우고 세션 상태 쿠키를 null로 설정합니다. null 값은 브라우저에서 쿠키를 효과적으로 지 웁니다.
답변
이제 2018 년이되었으므로 ASP.NET Core에는 간단한 기본 제공 기능이 있습니다. 쿠키를 삭제하려면 다음 코드를 시도하십시오.
if(Request.Cookies["aa"] != null)
{
Response.Cookies.Delete("aa");
}
return View();
답변
비밀번호를 쿠키로 저장해서는 안됩니다. 쿠키를 삭제하려면 쿠키를 수정하고 만료하기 만하면됩니다. 실제로 삭제할 수는 없습니다. 즉, 사용자 디스크에서 제거 할 수 없습니다.
다음은 샘플입니다.
HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i=0; i<limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1); // make it expire yesterday
Response.Cookies.Add(aCookie); // overwrite it
}