2011-09-05 1 views
0

사용자가 로그온 할 때 문제가 발생하여 사용자에게 ID를 할당합니다 (예 : 126). 그러나 금지 된 사용자를 유지 관리하거나 삭제할 때 사용자 ID 126이 데이터베이스에서 제거됩니다 , 그러나 사용자 (126)는 여전히 자신의 세션에서 번호 126을 갖는다. 사용자 ID가 삭제 된 데이터베이스를 감지하면 세션 내용을 '삭제'할 수 있습니까? 고맙습니다.codeigniter에서 데이터베이스와 세션을 동기화하는 방법은 무엇입니까?

+0

는 음, 어디, 확인하기 위해 검사를 할 확인할 수 있도록 캐시가 글로벌 있어야 로그인 한 사용자를 캐시 컨트롤러가 세션을 할당하기 전에 변수 검사에 로그인 한 다음 session_destroy가 아닌 경우 헤더를 로그인에 리디렉션합니다. –

답변

0

새 사용자에게 할당 된 경우에도 ID 126이 차단 될지 걱정됩니다.

이러한 경우 ID (일반적으로)가 자동 증가 방식으로 생성되고 DB (MySQL 대부분은 아마도 가장 높은 다른 사용자)가 생성 된 최고 값보다 높은 값을 선택하기 때문에 문제가되지 않아야합니다 값은 자동 증가 필드에 있습니다.

그래서 할당 된 값은 다음 당신은 당신이 원하는 것을 삭제할 수 1234 있었다의 highes, 다음 값은 나에게 보인다

1235 그래서 문제는 정말 문제가되지 않습니다 될 것입니다 경우.

+0

그러나 사용자가 세션 ID 126을 가지고있을 때 서버 측에서 세션의 사용자 ID를 확인하기 때문에 서버 측에서 유효한 사용자 ID라고 생각할 것입니다. 그래서 많은 사람들이 예측할 수 없거나 이상한 오류가 있습니다. – Tattat

+0

세션 ID는 126 일 것입니다. 이것은 꽤 예측 가능하며 따라서 인증 메커니즘을 상당히 취약하게 만듭니다. – Raffael

+0

그 뜻은, 사용자가 요청을 할 때, 나는 db를 다시 쿼리하여 사용자 ID가 있는지 여부를 확인해야합니까? 많은 사용자가 있다면 정말 많은 비용이 듭니다. – Tattat

0

나는이 생각할 수있는이 개 솔루션은 DB에서

1) 저장 사용자 자격 증명, 사용자가 다음의 경우 이미 사용자를 걷어차 자격 증명을 확인 할 수있는 작업을 만든다마다이 있습니다 금지. 나는 생각하지 않는다 그

2) 금지 된 사용자의 세션이 세션이 내 활성 상태 인 경우