내 asp.net 세션 객체가 SQL 서버에 저장됩니다. 세션 중에 ID
을 저장하고 있습니다. 클라이언트가 다른 브라우저를 열고 다른 ID
을 세션에 저장하는 경우 동일한 기본 사용자 로그인 사용자에서 "ID가 열려 있는지 확인 하시겠습니까?"라는 고객에게 알려야합니다.asp.net의 여러 브라우저에서 서버 세션 핸들?
우리가 어떻게 asp.net에서 확인 가능 (익명되지 않음) 로그인 한 사용자에
응용 프로그램 실행?
내 asp.net 세션 객체가 SQL 서버에 저장됩니다. 세션 중에 ID
을 저장하고 있습니다. 클라이언트가 다른 브라우저를 열고 다른 ID
을 세션에 저장하는 경우 동일한 기본 사용자 로그인 사용자에서 "ID가 열려 있는지 확인 하시겠습니까?"라는 고객에게 알려야합니다.asp.net의 여러 브라우저에서 서버 세션 핸들?
우리가 어떻게 asp.net에서 확인 가능 (익명되지 않음) 로그인 한 사용자에
응용 프로그램 실행?
이것에 대해 갈 수있는 몇 가지 방법이 있습니다 : 사용자 테이블에
옵션 # 1, "세션 ID"
라는 값을 추가 확인 사용자가 로그인 무엇을 볼 때 자신의 마지막 세션 ID는입니다. 그런 다음 여전히 유효한 세션인지 테스트하십시오. 그렇다면 무엇을하고 싶은지 물어보십시오. 로그인 할 때마다 해당 테이블에 최신 세션 ID를 저장하십시오.
그러나 옵션 # 2 :하지 마십시오. 사용자가 응용 프로그램에 액세스하기 위해 여러 개의 브라우저 창을 열고 싶으면 해보십시오. 아마도 꽤 좋은 이유가있을 것입니다. 대부분의 (거의 모든) 사용자는 "세션 상태"가 무엇을 의미하는지 전혀 모르고 있으며 실제로 알고 싶어하지 않습니다. 그들이 관심을 갖는 것은 모두 일을 끝내는 것입니다.
귀하의 옵션 # 2는 "방법"이 아니라 "무엇"입니까? OP는 각 단일 사용자가 여러 세션을 가질 수있는 상황을 처리하는 방법을 요구하고 있습니다. 같은 이유로, 옵션 # 1도 잘 작동하지 않습니다. 어떤 방법으로도 세션 하이재킹을하지 않으면 다른 세션의 정보에 액세스 할 수 없습니다. 나는 OP의 경우 임시 데이터를 저장하는 유일한 방법은 캐시를 사용하는 것이라고 믿는다. – Andrey
세션이 인증 된 사용자와 연결되어 있지 않으며 세션 ID를 모른 채 다른 세션의 세션에 액세스 할 수 없습니다.
일반적으로 이러한 종류의 문제는 세션 상태 대신 캐시를 사용하여 해결할 수 있습니다. 캐시를 사용하면 데이터 저장을 위해 사용자 고유의 키를 만들 수 있습니다. 한 서버에서 또는 웹 팜 환경에서 웹 응용 프로그램을 실행할 것인지에 따라 asp.net in-process 캐시 또는 수많은 분산 캐시 솔루션 중 하나를 사용할 수 있습니다 (예 : mycached에서 사용하는 memcached). 큰 성공을 거둔 웹 프로젝트).
새 창을 열지 않은 동일한 고객이 사이트에 방문하는 것이 아니라는 사실을 어떻게 알리시겠습니까? –
로그인 ID를 사용하면 누가 로그인했는지 알 수 있습니다. – James123
정보를 알 수 있도록 사람들이 로그인하고 있음을 설명하기 위해 질문을 편집하여 확장 할 수 있습니다. 그렇지 않으면 마치 익명 사용자가 새 창을 열 것을 요구하는 것처럼 읽습니다. –