2009-11-03 4 views
0

CakePHP에 대한 경험이 있고 ASP.NET MVC 프레임 워크에서 코딩을 시작했습니다. 로그인 시스템에 문제가 있습니다. 시스템에서 사용자가 동시에 한 번만 기록하도록 제한하려면 어떻게합니까?로그인 한 사용자 만 허용하는 ASP.NET MVC

로그인 할 때 고객이 활성 상태가되는 DB에 필드를 만들 수 있습니다. 로그 아웃하면 내가 활성화 될 수 있습니다. 그러나 세션이 끝나면 어떨까요? 어떻게 나는 이것을 붙잡을 수 있습니까?

답변

0

불행히도 세션 종료 이벤트는 사용자가 실행시 필요한 정보에 액세스 할 수 없기 때문에 구현됩니다.

그래서 마지막으로 로그인 한 세션을 추적하면 다른 세션에서 동일한 인증 된 사용자로부터 요청을 받고 해당 세션에 대한 인증을 제거하면 사실상 머리에있는 문제를 조금만 돌리십시오 이전 세션)을 적절한 메시지로 리다이렉트한다.

여기 키는 현재 누가 로그인했는지뿐만 아니라 해당 로그인의 세션 ID도 추적합니다.

세부 사항은 조금 더 복잡합니다. 요청 레벨에서 테스트를 수행하거나 자체 기본 페이지 클래스를 추가하여 "실제"페이지를 모두 추출하고 페이지 이벤트를 체크인하여 테스트를 수행 할 수 있습니다.

+0

내 데이터베이스에 sessionID를 보관할 수 있습니다. 사용자가 로그 아웃하면 삭제됩니다. 그러나 사용자의 세션이 끝나면 sessionID는 거기에 머물러 있습니다. 그래서 사용자가 로그인 할 때 현재 sessionId가 데이터베이스와 다른지, 그리고 세션 시간 초과가 종료되었는지 여부를 확인해야합니다. 또한 사용자의 로그온 날짜 시간을 유지하고 있습니까? – gong

+0

음, 일종의. 단일 솔루션이 없습니다. 내가보고있는 방식은 사용자가 로그인 할 때 세션이 현재 유효하지 않고 이전 세션의 사용자를 강제로 로그 아웃해야하기 때문에 이전에 어떤 세션이 활성화되었는지 신경 쓰지 않는 것입니다. 관심있는 것은 사용자 *와 * 세션의 조합이 요청할 때 유효한지 여부입니다. – Murph

3

article은 가능한 해결책을 제공합니다.

+0

당신은 내 제안과 비슷한 것을하고 코드를 가지고있는 upvote 'cos을 얻습니다! – Murph

관련 문제