사용자가 테스트를 실행하고 콘텐츠를 공부할 수있는 웹 사이트를 만들고 있는데, 로그인 한 사용자가 다음을 가질 수 있기를 바랍니다. 하나의 논리 세션. 따라서 현재/최신 세션 이외의 세션에서 오는 요청을 무효화하여 동일한 계정에 로그인 한 여러 브라우저 또는 컴퓨터에서 동시 사용을 본질적으로 제한합니다. 그러나 나는 asp.net 폼 인증을 사용하여이 문제에 최선을 다하는 방법에 대해서는 확신 할 수 없다.AuthCookie의 고유 ID로 사용자를 하나의 로그인 세션으로 제한하고 데이터베이스 테이블을 검사합니다.
나는 생각하고있다 :
이 ActiveSessions라는 DB 테이블을 작성, 행과 : 사용자 ID를 UniqueSessionID을. 이 UniqueSessionID를 클라이언트의 암호화 된 AuthCookie에 저장하십시오.
사용자가 인증되지 않고 표준 로그인 페이지/계정/로그인 등을 통해 로그인하는 경우 새 UniqueSessionID를 만들고 기존 값을 덮어 쓰는 AuthCookie 및 ActiveSessions 테이블에 각각 저장합니다. 기본 AuthCookie 폼 인증의 내용을 해독하고 복사 한 다음이 복사 된 데이터를 사용하여 새 AuthCookie를 만들고 클라이언트에 반환하기 전에 내 UniqueSessionID를 삽입해야한다고 가정합니다.
AuthCookie가 데이터베이스의 항목과 일치하지 않는 UniqueSessionID를 보유하거나 레코드가 해당 사용자에 대해 누락 된 요청이 들어오는 경우 세션을 무효화하고 브라우저를 로그인 페이지로 리디렉션하거나 kill합니다. Ajax 요청에 대한 세션 오류 및 발급 오류.
- 것은 사용자 LastActivityDate가 일정 시간 길이를 초과하는 경우에 따라 ActiveSessions 테이블의 레코드를 정리 예정된 서비스의 일종 만들기 등
이상적으로는 바라고 인증이 약간의 훅을 제공 형성 여기서 내가 할 수있는 이 논리를 붙이면 컨트롤러/메소드 등의 속성을 사용하지 않아도됩니다.
또한 세션 상태와 쿠키를 완전히 사용하지 않는 것이 좋습니다.