2012-06-23 1 views
0

양식 인증을 사용하는 ASP.NET 응용 프로그램에 시간 제한을 5 분으로 설정했습니다. 내 페이지에는 클릭 할 때 내 .svc 파일에 지정된 서비스에있는 작업으로 AJAX 호출이 생성됩니다. 클라이언트 자바 스크립트에서 응용 프로그램의 시간이 초과되었음을 어떻게 알 수 있습니까? 아니면 global.asax에서 이것을 어떻게 찾을 수 있습니까? 어쩌면 application_beginrequest에서?클라이언트 스크립트에서 인증 시간 초과를 감지하는 방법

답변

0

세션 시간 초과에 대해 이야기하고 있다면. 이 경우 IHttpSessionState.IsNewSession 속성을 true로 설정해야합니다.

auth timeout을 말하는 경우 AuthenticationTicket의 만료 여부를 확인해야합니다.

+0

사용자가 로그인 할 때 명시 적으로 AuthenticationTicket을 만들어야하고, 인증되지 않은 경우 Authentication.You가 생성합니다. 그 시간에 티켓의 이름을 지정하면 자바 스크립트에서 쿠키를 가져올 수 있습니다. – TheGeekYouNeed

+0

@TheGeekYouNeed 쿠키에 대한 [권장 보안 지침 및 HttpOnly 설정] (https://www.owasp.org/index.php/HttpOnly)을 따르면 클라이언트 스크립트를 통해 쿠키에 액세스 할 수 없습니다. – explunit

0

접근 방식이 다릅니다. 현재 사용자의 인증 상태를 나타내는 JSON 구조를 반환하는 특수 페이지/처리기를 요청하여 인증 만료를 먼저 확인하는 별도의 클라이언트 스크립트를 사용합니다. 사용자가 여전히 활성 상태라는 사실을 알고 난 후에 만 ​​메인 아약스 액션을 실행합니다. 또 하나의 요청이지만 타임 아웃 로직을 메인 아약스 로직과 얽히게하지 않아도됩니다. 또한 "경고, 세션이 x 분 내에 시간 초과됩니다"팝업에서 별도로 사용할 수도 있습니다.

this question 참조를 설정하는 방법에 대한 자세한 내용은이 my answer하지만, 중요한 점은 당신이 슬라이딩 만료를 확장 할 수 만료에 대한 체크을 원하지 않는 경우 구성해야한다는 것입니다 만료 페이지/Handler를 slidingExpiration = false로 설정된 폼 인증을 사용하는 별도의 가상 디렉터리로 만듭니다.