2010-04-28 8 views
1

나는 파이썬에서 사용자가 이메일과 패스워드를 제출하는 웹 애플리케이션을 가지고있다. 이 값들은 mysql 데이터베이스에 저장된 값과 비교된다. 성공하면 스크립트는 세션 ID를 생성하고 데이터베이스의 이메일 옆에 저장하고 세션 id가있는 쿠키를 설정하여 사용자가 다른 부분과 상호 작용할 수있게합니다.파이썬 웹 앱의 자동 로그 아웃

사용자가 로그 아웃을 클릭하면 스크립트가 세션 ID를 데이터베이스에서 지우고 쿠키를 삭제합니다. 쿠키는 5 시간 후에 만료됩니다. 내 관심사는 사용자가 로그 아웃하지 않고 쿠키가 만료되면 스크립트가 강제로 로그인하지만 이전에 세션 ID를 복사했다면 여전히 유효성을 검사 할 수 있다는 것입니다.

5 시간 후에 어떻게 mysql 데이터베이스에서 세션 ID를 자동으로 삭제합니까?

답변

1

세션 ID의 일부로 만료 시간을 인코딩 할 수 있습니다. 그런 다음 세션 ID의 유효성을 검사 할 때 세션 ID가 만료되었는지 확인하고 강제로 사용자가 다시 로그인하도록 할 수 있습니다.

또한 만료 된 세션을 제거하여 데이터베이스를 정기적으로 정리할 수 있습니다.

0

데이터베이스의 세션 ID에 시간 소인을 추가하여 실행 시간을 알 수 있습니다.

더 나은

, 그냥 여전히 유효한 세션 ID의 여부를 전면에있는 숫자를보고 세션 ID 자체, 예를 들면 : 스크립트가 볼 수 있도록

Set-Cookie: session=1272672000-(random_number);expires=Sat, 01-May-2010 00:00:00 GMT 

의 타임 스탬프 부분을 확인하십시오.

더 나은 방법으로 만료 시간 소인 을 세션 ID의 사용자 ID 부분으로 만들고 비트 끝에 사용자 ID, 만료 시간 및 비밀 키의 암호화 해시를 만듭니다. 그런 다음 ID 의 유효성을 검사하면 데이터베이스에 아무 것도 저장하지 않고 어떤 사용자인지를 알 수 있습니다. (Related PHP example.)