2009-10-24 5 views
1

내 앱은 30 분 후에 세션 시간 초과가 발생합니다. 사용자가 "영구 로그인"기능을 활성화 한 경우, 후속 HTTP 요청에서 서버는 "perm session"쿠키를 읽고 세션을 복원합니다.AJAX 통화로 세션 다시 시작

그러나 사용자가 세션이 만료 된 후 다른 페이지로 다시로드하거나 탐색하지 않고 AJAX를 통해 데이터를 검색하는 버튼을 클릭하면 세션이 다시 시작되지 않습니다. 데이터가로드되어야하는 DIV에서 로그인 창이 대신 나타납니다.

이것은 AJAX 호출이 쿠키 정보를 전달하지 않는다는 것을 전제로합니다. 나는 맞습니까? 아니면 다른 것을 놓쳤습니까?

업데이트 :

백엔드 : 심포니 1.2 (PHP 프레임 워크), 프론트 엔드 : 프로토 타입

갱신 2 :이 응용 프로그램의 버그, 쿠키

+0

흥미로운 점은 브라우저에서 수행 한 요청이 쿠키 정보를 전달한다고 생각할 수 있습니까? –

+0

해당 가정은 실제 웹 트래픽을 검사하여 확인/반증 될 수 있습니다. Windows에서 작업하는 경우 Fidder (http://www.fiddler2.com/fiddler2/)는 훌륭한 도구입니다. 그렇지 않으면 Firebug의 Net 패널이 작업을 완료해야합니다. – kdgregory

+0

사실, 좋은 힌트; 나는 Firebug에서 요청을 검사했고 쿠키 정보가 거기에있다. –

답변

2

세션을 복원하고 있지만 새 인증 쿠키를 제공하지 않는 것 같습니다. 내 블로그에서 클라이언트 측 타이머를 사용하여 세션 시간이 초과되기 전에 사용자에게 메시지를 표시하는 기술을 시도해 볼 수 있으며, 확인을 클릭하여 갱신하면 요청을 할 수 있습니다. 세션 및 인증 쿠키를 유지하는 역할을합니다. http://farm-fresh-code.blogspt.com에서 자세한 정보를 확인할 수 있습니다. 이 기사의 제목은 Client-side Session Termination입니다.

+0

위대한 튜토리얼! 차라리 "이봐, 네 세션이 만료되다"라는 팝업창이 뜨지 않을 것이다. 나는 세션이 투명하게 재개 될 때 선호한다. –

+0

그냥 대화 상자가 나타나지 않고 요청을하면됩니다. 보안상의 이유로 사용자가 컴퓨터에 앉아 있지 않은 경우 세션이 만료되기를 원하므로 합리적인 시간 내에 응답하지 않으면 자동으로 팝업을 사용하여 로그 아웃합니다. – tvanfosson

2

XMLHttpRequest 호출해야하지 문제였다 보통과 같이 쿠키 정보를 전달합니다. 버그가 발생할 수도 있습니다. 통화가 동일한 도메인 출신인지 확인하고 있습니까?

아마도 쿠키의 유효 기간이 만료 되었습니까? 더 많은 정보가 도움이 될 수 있습니다 .. :)

+0

나는 버그로 의심된다. –

+0

외부 도메인 출처를 다룰 때 어떻게해야하는지 알고 있습니까? –