2009-07-29 2 views
4

세션 변수를 사용하여 로그인 상태를 저장하는 고전적인 asp 웹 사이트가 있습니다. userid, isloggedin 등. 로그 아웃시 세션 변수가 재설정되고 Session.Abandon()이 호출 된 다음 로그인 페이지로 리디렉션됩니다. IE7에서는 로그 아웃 후에 이전에 방문한 URL을 입력하고 로그 아웃하기 전에 캐싱 된 상태의 버전이 있는지 확인할 수 있습니다. ctl-f5를 누르면 서버에서 다시로드되고 로그인 페이지로 리디렉션됩니다. 이것은 url이 ctl-f5없이 입력 한 경우에도 발생하려는 동작입니다. 누구든지이 동작을 얻는 방법을 알고 있습니까?IE7 Classic ASP 캐시

답변

1

는 내가 전에 비슷한 문제를 했어,하지만 난 그 페이지의 링크를 클릭 한 때마다, 다시 로그인하라고 것

당신은 재설정 sessionID와 시도 중 수 있습니다. = ""또는 sessionID = "XYZ"로 설정하고 로그 아웃시 코드가 무시하는 항목을 XYZ로 설정하십시오.

노 캐시 헤더를 설정할 수도 있습니다.

0

하지만 no-cache를 보내면 원하는 성능을 얻을 수있는 조용한 성능을 발휘할 수 있습니다. 나는 Liams 제안을 선호하며 그 페이지에서하는 모든 일에 로그인 할 것을 요구합니다. 그렇게해서는 안되는 일은 아무도 할 수 없습니다. 이메일 시스템이 비슷하거나 비슷하다면 사람들은 캐시 된 다른 사람들의 이메일을 볼 수 있습니다. 예를 들어, 예를 들어 민감한 정보를 캐싱하지 않으면 이동하는 방법입니다 (기본값으로 HTTPS 페이지를 캐시 할 수 없습니다).

"로그인 한"쿠키의 존재 여부를 확인할 수있는 일부 자바 스크립트를 헤드에 포함시킬 수도 있습니다. 이것은 페이지를로드 할 때마다 실행되며 쿠키가 없으면 JS가 사용자를 로그인 페이지로 리디렉션 할 수 있습니다. 100 % 바보 증거는 아니지만 충분히 좋습니다. 로그 아웃 페이지에서이 쿠키를 지우고 로그인 페이지를 설정해야합니다.

2

mkoryak의 대답 (no-cache 헤더 사용)이 가장 적합하다고 생각합니다. 사용자가 로그인 할 때만 특정 페이지를 보길 원할 경우 가장 좋은 방법은 브라우저에 페이지를 캐시하지 않도록 지시하는 것입니다. 또한, 쿠키를 조정하고 자바 스크립트를 사용하여 클라이언트의 로그인 상태를 결정하는 등의 기법은 단순히 바퀴를 재발 명하고 있습니다.

일부 캐싱을 활용하고 페이지가 지속적으로 업데이트되는 것이 아니라면 Response.Expires 헤더를 적절한 값으로 설정하는 것이 좋습니다 (몇 분 안에 측정 한 것입니다).