세션이 변경되거나 유효하지 않은 경우 httpcookie가 삭제되지 않습니다.

StackOverflow https://stackoverflow.com/questions/3292886

문제

httpcookie를 만들고 이름과 값 만 설정하고 Expires 속성이 아닌 응답에 추가합니다. 충분히 간단합니다. 쿠키는 예상대로 (지속되지 않음) 작성됩니다. 문제는 세션이 어떤 이유로 (웹 사이트가 재건 된 것처럼 재건되었거나 디버깅 할 때 앱을 재구성 할 수 있음)을 변경하는 경우 쿠키가 주위를 유지합니다. 쿠키가 생성 된 원래 세션에만 유효하도록합니다.

MSDN에 따르면 "쿠키에 대한 만기 제한을 지정하지 않으면 쿠키가 클라이언트 컴퓨터에 유지되지 않으며 사용자 세션이 만료 될 때 만료됩니다."

"세션 만료"가 무엇을 포함하는지 정확히 알지 못한다고 생각합니다. 나는 세션이 만료 될 때 쿠키가 20 분 후에 삭제되면 쿠키가 삭제됩니다. 그러나 쿠키가 삭제되어야하는 세션이 삭제되지 않으면 더 이상 이유가 더 이상 존재하지 않습니까? 쿠키를 삭제 한 유일한 시간 만 사용자가 모든 브라우저 창을 닫고 새 브라우저 창을 엽니 다.

모두가 true이면 쿠키에 원래 세션 ID ( "asp.net_sessionid")를 저장 한 다음 현재 세션 ID에 대해 확인한 다음 쿠키를 삭제하거나 만들 수 있습니다. 새로운 것.

여기에 코드가 있습니다 (내 쿠키 간의 유일한 차이점과 MSDN 예제 간의 차이점은 쿠키에 여러 값을 저장하는 것입니다) :

private void SaveValuesToCookie(string[] names, string[] values)
{
    HttpCookie cookie = new HttpCookie("MyCookie");

    for (int i = 0; i < names.Length; i++)
    {
        string name = names[i];
        cookie.Values[name] = values[i];
    }
    Response.Cookies.Add(cookie);
}

private string GetValueFromCookie(string name)
{
    HttpCookie cookie = Request.Cookies["MyCookie"];
    if (cookie == null)
        return null;

    return cookie.Values[name];
}
.

도움이 되었습니까?

해결책

쿠키가 보았던 유일한 시간을 얻을 수 있습니다. 삭제 된 것은 사용자가 모두 닫을 때입니다 브라우저 창을 열고 새 꺼짐을 엽니 다.

그리고 그것은 정확히 MSDN이 세션이 만료 될 때 쿠키가 삭제 될 때 정확히 의미합니다. 불행히도, 나는 이것이 어쨌든 브라우저에서 일정한 것이 아니라는 것을 믿습니다. 그래서 그것은 아무도 많이 사용하지 않습니다.

항상 쿠키에 만료일을 설정해야합니다.

이것이 모두 사실이라면, 나는해야 할지도 모른다. 원래 세션 ID를 저장하십시오 ( "asp.net_sessionid") 쿠키의 경우, 그런 다음 현재를 확인하십시오 세션 ID, 그들이 다를 경우, 그렇다면 쿠키를 삭제하거나 새 것을 만들 수 있습니다.

나는 그것을 말하기를 싫지만 이것은 당신을 도울 수 없습니다. .NET Framework는 세션 ID를 재활용하는 것을 좋아하므로 다른 것이 좋습니다.

나쁜 뉴스가 방해가되지 않아, 나는 당신이 아키텍처 관점에서하려는 것을 재검토하라는 것을 조언 할 것입니다.

앱을 다시 시작하는 것은 서버에서 전적으로 일어나는 일입니다. 쿠키는 전적으로 클라이언트에서 일어난 일입니다. 클라이언트가 서버와 대화하는 동안 순수하게 요청 / 응답 관계이며 서버는 응용 프로그램 재시작과 같은 이벤트를 브라우저로 전달할 수 없습니다.

서버 세션의 수명에만 유효한 값을 저장하려면 쿠키가 아닌 세션에 저장하지 않으시겠습니까?

다른 팁

저는 그 모든 것을 알고 있지만 고객이 필요로하는 것이 충분히 안전하지 않습니다.세션은 여전히 스푸핑되거나 주입 될 수 있습니다. http://msdn.microsoft.com/en-us/잡지 / CC163730.aspx # s9

는 세션과 별도의 만료 된 보안 쿠키를 만들고, 할 수있는 경우 만료일을 새로 고치고 만기일을 새로 고치는 것처럼 보입니다 (즉, 사용자가 특정 페이지에 액세스 할 때).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top