2011-02-06 2 views
0

나는 사람들이 로그인하는 메인 사이트를 가지고있다. 이것은 IIS이며 표준 세션 시간은 20 분입니다.세션 타임 아웃 이상한

동일한 도메인의 팝업 창에 나타나는 라이브 채팅 기능이 있습니다. 관련된 https가 없습니다.

채팅 창에서 Ajax를 몇 초마다 호출하고 (적어도 항상 하나 이상의 데이터를 얻음) 로그인 한 사용자가 메시지를 게시 할 때마다 Ajax를 통해 서버로 데이터를 보냅니다 아무 일도 일어나지 않는 것처럼 20 분 후에 시간 초과됩니다.

서버와 적극적으로 통신하는 동안 사이트에서 로그 아웃되는 것이 분명히 불합리한 이유가 무엇인지, 어떻게 중지해야하는지에 대한 아이디어.

+0

사용자를 인증하고 사용자를 계속 로그인하는 데 사용하는 메커니즘은 무엇입니까? – Kev

+0

AJAX는 브라우저에서 캐싱을하는 습관이 있습니다. ..... 모든 요청에 ​​대해 임의의 값을 보내고 도움이되는지 확인하여 문제를 해결하십시오. –

답변

0

양식 인증을 사용하고 있고 인증 쿠키도 만료되고있는 것 같습니다.

요청이 응용 프로그램에 전송되고 현재 세션이 여전히 유효 할 때마다 세션 시간 초과가 갱신됩니다.

폼 인증은 두 가지 방식으로 작동 할 수 있습니다. 사용자는 일정 기간 동안 로그인 상태를 유지하거나 슬라이딩 만료를 사용할 수 있습니다. 예를 들어

또한
<authentication mode="Forms"> 
    <forms defaultUrl="~/Default.aspx" 
     loginUrl="~/Login.aspx" 
     slidingExpiration="true" 
     timeout="15" /> 
</authentication> 

상기 세트 15 분 폼 인증 시간 초과하지만 슬라이딩 만료 (slidingExpiration="true" 있도록 사용자 15 분 쿠키 수명이 연장 될 것이며, 사용자가 인증 된 상태를 유지한다 내의 위치를 ​​재 방문 제공한다. .

만약 slidingExpiration="false" 다음 사용자에 관계없이 마지막으로 사이트.

또한 폼 인증 쿠키가 약간 이전 세션 제한 시간보다 만료가 좋은 생각을 액세스 할 때 15 분 개막됩니다. 티 즉, 사용자가 null 세션 데이터를 만나기 전에 킥오프된다는 것을 의미합니다.

+0

이 코드는 어디에 있습니까? 채팅 페이지는 양식 제출을 사용하지 않지만 Ajax를 사용하여 양식 필드 데이터를 수집하고 게시합니다.또한 ajax에 의해 호출 된 ASP 스크립트로 세션이 만료되었는지 여부를 확인하고 사용자에게 로그 아웃되었음을 알리는 경고를 보내는 데이터를 다시 보냅니다. Ajax에서 사용되는 실제 ASP 스크립트는 사용자가 로그인하지 않아도 오류가 발생하지 않도록합니다. – derekcohen

+0

@derek - 제 사과, 당신이 ASP.NET을 사용하고 있다고 가정했습니다. – Kev

+0

@derek - ASP.NET이 아니라 정말 고전적인 ASP입니까? – Kev

1

내가 결정한 것은 사이트의 세션 변수가 아닌 쿠키를 사용하여 로그인했는지 확인하는 것입니다. 채팅 앱이므로 처음 채팅 페이지를 열면 시간이 생깁니다.
그리고 메시지를 게시 할 때마다 한 시간 후에 다시 설정됩니다.

그런 식으로 포스터가 로그인 상태를 유지하고 잠복 자들이 부딪치게됩니다. 게시물에

response.cookies("chatuser")=nickname 
response.cookies("chatuser").expires=now()+0.5 

메시지 :

response.cookies("chatuser").expires=now()+0.5 
0

당신이 실제로 당신의 AJAX 요청이있는 모든 쿠키 정보를 전송하는 부하에

?

AJAX 요청에 ASP가 쿠키에 저장 한 세션 ID가 포함되어 있지 않으면 요청 빈도에 관계없이 요청이 세션을 유지 관리하지 않습니다.

+0

어떻게 할 수 있습니까? – derekcohen

+0

잘 모르겠습니다 - AJAX 요청을 수행하는 데 사용하는 코드와 보유하고있는 HTTP 요청을 얼마나 제어하는지에 따라 다릅니다. – RobV