문제

모두 세션이 있습니다.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);
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top