2012-09-12 2 views
1

webapp2 응용 프로그램에 다음 요구 사항이 있습니다. 사용자가 컴퓨터 또는 브라우저를 나가면 해당 사용자의 이전 인증 세션이 종료되어야합니다.Webapp2 - 사용자가 다른 브라우저에서 로그인 할 때 사용자 로그인 세션을 무효화하십시오.

사용자가 다른 컴퓨터에서 로그인 할 때 로그인 할 때 remote_addr을 User 객체에 저장하여이 작업을 수행 할 수 있습니다. 사용자 세션이 요청되면 로그인시 사용자의 remote_addr에 대한 요청에서 remote_addr을 확인합니다.

사용자가 프록시 서버를 사용할 때 작동하지 않으며 사용자가 다른 브라우저를 사용할 때 작동하지 않기 때문에이 솔루션에 만족스럽지 않습니다.

webapp2는 세션 ID를 어딘가에 저장합니까? 그렇기 때문에 사용자가 새 세션에 로그온했는지 확인할 수 있습니다.

+0

세션 쿠키는 브라우저가 닫히면 삭제되어야하며 브라우저간에 유지되지 않아야합니다. 세션 쿠키를 올바르게 설정했거나 (또는 ​​webapp2에서) 세션 쿠키를 삭제 한 다음 사용자를 식별하는 모든 요청에 ​​대해이를 확인해야합니다 , 원하는 행동을 취해야합니다. 나는 webapp2에 익숙하지 않아서 그에 대한 구체적인 도움을 줄 수 있습니다. –

+0

@stu, 당신은 내 문제를 해결할 수있는 열쇠를 제공했다고 생각 하듯이이를 공식 답변에 넣어야합니다. –

+0

어쩌면 당신은이 질문을 가로막는 모든 사람들을 위해서 webapp2와 관련하여 어떻게 해결했는지에 대한 구체적인 세부 정보를 직접 게시 할 수 있습니까? –

답변

0

사용자가 로그인 할 때 고유/임의 토큰을 만들어 사용자 개체에 저장하고 함께 브라우저에 쿠키를 설정하십시오. 사용자의 세션이 요청되면 요청 쿠키와 사용자 개체의 두 토큰이 일치하는지 확인하고 일치하지 않으면 세션을 레코딩합니다.

동일하지만 로그인 할 때 쿠키로 생성하고 설정하는 임의의 토큰을 remote_addr 대신 사용하십시오.

0

브라우저 세션에서 처음으로 웹 사이트를 열면 사이트 세션이 만들어집니다.

로그인 할 때 세션 ID를 데이터베이스에 저장하기 만하면됩니다. 활성 로그인이있는 멋진 테이블이 있어야합니다. 브라우저를 닫고 나중에 다시 시작하면 로그인 상태를 유지하려면 브라우저에서 쿠키를 설정할 수도 있습니다. 분명히 쿠키가 존재하면 세션 ID를 쿠키의 ID로 수정하십시오.

쿠키는 브라우저간에 공유되지 않으므로이 경우 로그인하면 새 브라우저에서 활성 로그인 테이블의 세션 ID가 변경됩니다.

또한 현재 세션이 5 분마다 활성화되어 있는지 확인하고 그렇지 않은 경우 로그 아웃하는 작은 아약스가 필요합니다.