2009-11-09 6 views
0

나는 사용자가 아약스 (jquery)를 많이 가지고있다. 이제 사용자가 어떤 이유로 든 시간을 초과하면 (30 분 정도 걸 으면서). 거기에서 다음 작업을 로그인 페이지로 되돌리려합니다.시간이 초과되면 사용자를 로그 아웃 페이지로 다시 리디렉션 할 수 있습니까? Asp.net MVC

I 설정 webconfig의 모든 (returnUrl 및 시간 초과) 그리고 그들은 그들이에 갈 premission이없는 페이지로 이동하려고하면 로그인 페이지로 전송받을.

그러나 나는 아약스 요청에 사용되는 내 컨트롤러의 방법에 대한 권한 부여 태그가 있습니다. 따라서 사용자 시간 초과가되면 그들은 더 이상 인증되지 않지만 로그인하고 걸어서 걸어 갔기 때문에 필요한 인증을받을 수 있습니다.

은 이제 그들은 가서 아약스 요청을 할 것이 시점에서 뭔가를 저장을 시도 할 수 있습니다. 승인 태그는 인증에 실패하고 반환 URL이 시작될 것이기 때문에 수행을 중지합니다.

반환 URL이 다시 전송 된 것 같지만 서명 페이지로 리디렉션되지 않습니다. 그래서 나는이 모든 것들이 왜 제대로 작동하지 않는지 아약스라고 추측하고 있습니다. 그럼 내가 해결할 수 있을까?

답변

1

403 응답의 경우 Ajax 오류를 확인해야합니다.

+0

"403"오류가 발생하지 않습니다. 나는 200 OK를 되 찾는다. – chobo2

+0

사실 그것은 200 OK를 다시 얻는 것 같지만 Jquery Ajax.Error를 설정하면 오류 메소드로 간다. 그러나 403 오류인지 확인하는 방법을 잘 모릅니다. – chobo2

+0

또한 이렇게하면 문제의 절반 만 해결할 수 있습니다. 이후 아약스 탭과 무슨 일이 인증 실패하면됩니다. 로그인 페이지를 탭에로드합니다. – chobo2

1

실행 클라이언트 측 기능, 세션이 타임 아웃되었는지를 AJAX를 통해 서버를 요청한다에서는 setTimeout을 사용하여 30 초마다. 그럴 경우 클라이언트 측 코드가 로그인 쿠키를 버리고 로그인 페이지로 리디렉션 할 수 있습니다.

할 수 있습니다 하나의 코드 하드 코드 클라이언트 측 코드로 로그인 URL을하거나 시간이 초과 할 필요가있는 경우 서버 핸들러가 Web.config의에서 값을 반환해야합니다.

이 여전히 사용자가 실제로 사용자 아웃 시간과 클라이언트 측 코드를 확인하는 그 요청을 수행 할 때의 0~30초에 뭔가를 시도 할 수있는 가능성을 떠난다. 이 문제를 방지하려면 서버가 세션에 남아있는 시간을 다시 보내도록하십시오. 그러면 클라이언트 쪽 코드가 서버 측보다 먼저 다시 확인하거나 클라이언트 측 리디렉션을 결정할 수 있습니다. 낙하 시간.

+0

짧은 코드를 작성할 수 있습니까? 어떻게 30 초마다 또는 setTimeout을 실행하게 할 지 모르겠습니다. 이것은 jquery 함수입니까? javscript 함수? – chobo2

+1

안녕 Chobo, Rasik 다시 .... 여기 내 친구와 동료에 의해 작성된 자동 로그 아웃에 대한 샘플 코드에 대한 링크가 ... http://www.firozansari.com/ .... 그것을 살펴 2009/05/15/implementation-auto-logout-functionality/ –

+0

서버를 사용하는 사람이 몇 명 이상 있으면 서버를 망칠 수 있습니다. –

관련 문제