AJAX를 사용하여 사용자 세션이 만료되었는지 확인한 다음 로그인 페이지로 반환합니까?
-
08-07-2019 - |
문제
다음 장면에서 AJAX를 사용하여 세션이 여전히 활성화되어 있는지 확인한 다음 사용자를 로그인 페이지로 반환 할 수 있습니까?
- 사용자가 로그인하여 작동을 시작합니다
- 사용자는 10 분 동안 사라지고 세션은 시간이 소요됩니다.
- 사용자는 컴퓨터로 돌아가서 여전히 화면에 10 분 전입니다.
- 사용자는 자신의 작업을 제출하지만 (기존 세션 상태 검사에 의해) 로그인 화면으로 반환되고 변경 사항은 지속되지 않습니다.
이상적으로 내가 뒤 따르는 것은 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.
제휴하지 않습니다 StackOverflow