AJAX를 사용하여 사용자 세션이 만료되었는지 확인한 다음 로그인 페이지로 반환합니까?

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

문제

다음 장면에서 AJAX를 사용하여 세션이 여전히 활성화되어 있는지 확인한 다음 사용자를 로그인 페이지로 반환 할 수 있습니까?

  1. 사용자가 로그인하여 작동을 시작합니다
  2. 사용자는 10 분 동안 사라지고 세션은 시간이 소요됩니다.
  3. 사용자는 컴퓨터로 돌아가서 여전히 화면에 10 분 전입니다.
  4. 사용자는 자신의 작업을 제출하지만 (기존 세션 상태 검사에 의해) 로그인 화면으로 반환되고 변경 사항은 지속되지 않습니다.

이상적으로 내가 뒤 따르는 것은 1 분마다 세션 상태를 확인하여 사용자가 유휴 상태인지 확인하는 방법입니다. 그들이 유휴 상태이고 세션이 만료 될 경우, 일시적으로 변경 사항을 절약 한 다음 세션이 만료되면 사용자가 유휴 상태에서 돌아 오기 전에 로그인 화면으로 페이지를 자동으로 변경합니다.

settimeout ()를 사용하지 않고도 할 수 있습니까?

도움이 되었습니까?

해결책

대부분이 서버 측 처리 할 수있는 경우.

서버 측 사용자 활동이있을 때마다 - 페이지로드, ajax 호출, 무엇이든, 세션 변수 설정

Session["last_activty"]=DateTime.Now;

Ajax 호출 및 페이지로드에서 (인증이 필요한 페이지의 마스터 페이지/중첩 마스터 페이지 에서이 작업을 수행 할 수 있음) 확인 (Pseudocode)

if (DateTime.Now-DateTime.Parse(Session["last_activity"]) > 10 minutes)
  Session["logged_in"]=false;

페이지로드 또는 WebMethod/WebService 메소드가 사용자가 시간을 초과 한 위의 내용을 기준으로 결정하는 경우

a) 로그인 페이지 (서버 쪽)로 리디렉션하거나

b) 상태 코드를 Ajax 발신자에게 반환하여 로그인 대화 상자의 리디렉션 또는 표시가 발생합니다.

노트: 실제 세션 변수는 클러스터 서버 환경에서 잘 작동하지 않으므로 사용하지 않도록하십시오. 이 유형의 물건을위한 더 나은 곳은 데이터베이스에 있습니다.

table Users
.ID
.last_activity datetime
.logged_in - calculated column which returns if GetDate()-LastActivity > 10 minutes.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top