에 ASP.NET 할 때 사용해야 합니다.Clear()보다 세션.기()?
-
19-08-2019 - |
문제
모두 세션이 있습니다.Clear()와 세션이 있습니다.기()제거의 세션 변수입니다.나는 그것을 이해하기()끝에 현재 세션,그리고 원인이 새로운 세션을 만들 수 있으므로 끝을 시작 이벤트습니다.
그것은 보인다 바람직한 전화를 포기하()에서 대부분의 경우,등록 사용자니다.가 있는 시나리오 나는 사용 Clear()까요?은 거기에 많은 성과의 차이가 있나요?
해결책
Session.Abandon()
괴 세션 고 Session_OnEnd 이벤트 됩니다.
Session.Clear()
그 을 제거하는 모든 값 (콘텐츠)다.세션과 동일한 핵심입니다 아직 살아있다.
그래서 사용하는 경우 Session.Abandon()
, 에,당신은 잃는 특정 세션과 사용자에게 새로운 세션을 키입니다.당신은 그것을 사용할 수 있었습니다 예를 들어 사용자가 로그인할 때다.
사 Session.Clear()
, 하려는 경우,사용자가 남아있는 동일한 세션에서(당신이 원하지 않는 경우 사용자를 로그인 예)모든 세션 특정 데이터입니다.
다른 팁
사용자가 로그 아웃 할 때 session.clear () 만 사용하면 보안 구멍이 발생할 수 있습니다. 웹 서버에 관한 한 세션이 여전히 유효합니다. 그런 다음 스니핑하고 세션 ID를 잡고 해당 세션을 납치하는 것은 합리적으로 사소한 문제입니다.
이러한 이유로, 사용자를 로그인 할 때는 세션이 파괴되고 새 세션이 생성되도록 SESSION.ABandon ()을 사용하는 것이 더 안전하고 현명합니다 (로그 아웃 UI 페이지가 새 세션의 일부가 되더라도. 새로운 세션에는 사용자 세부 사항이없고 새 세션을 가로 채는 것은 새로운 세션을 갖는 것과 동일하므로 음소거됩니다.
난 아직도 무엇인지 확실하지 않는 실제 예는 다음을 사용할 수 있습니다 Session.Abondon()
, Session.Clear()
.
내가 이해할 수 있는 경우 사용자가 로그아웃 링크를 클릭하고 당신은 그들이 당신의"당신은 로그아웃되었는"페이지..........자신의 브라우저 세션이 여전히 계속되지만 제거하려는 정보에 저장됩니다.는 경우 abondoned 세션에 새로운 세션을 것 만들어진 바로는"당신은 로그아웃되었습니다."
Session.Abandon
위에 언급 된대로 세션을 파괴하므로 누군가를 로그 아웃 할 때 사용해야합니다. 나는 잘 사용한다고 생각합니다 Session.Clear
전자 상거래 웹 사이트에서 쇼핑 바구니를위한 것입니다. 그렇게하면 사용자를 로그 아웃하지 않고 바스켓이 지워집니다.
나는이 문제가 있었고 둘 다 시도했지만 "pageeditstate"와 같은 쓰레기를 제거하기 위해 해결해야했지만 다시 찾아보기 위해 사용자 정보를 제거하지는 않았습니다.
public static void RemoveEverythingButUserInfo()
{
foreach (String o in HttpContext.Current.Session.Keys)
{
if (o != "UserInfoIDontWantToAskForAgain")
keys.Add(o);
}
}