2010-08-23 7 views
0

여기 너무 혼란 스럽습니다. 좋아, 그래서 우리는 몇 가지 정보를 저장하는 데 사용할 수있는 세션 개체를 만들려고.메모리에있는 세션 및 개체

내 계획은 사용자가 페이스 북에 로그인 할 때마다 (다시 사이트로 리디렉션 된 후) 새로운 FacebookSession 객체를 만드는 것입니다. 페이스 북 SDK가 Facebook에 로그인 한 후 자동으로 생성 된 쿠키를 사용하여 상태를 설정할 수 있습니다. 그래서 나는 서버 측에서 돌아와서 내 FacebookSession 객체를 생성하고 그 사용자의 페이스 북 계정에 필요한 정보가 들어있는 쿠키 정보 (userID, 토큰 등)를 해제 할 때 쿠키를 가져올 수 있기를 바랍니다.

세션 상태를 잘 이해하지 못하고 페이지와 관련된 스레드도 있습니다. 그래서, 모든 페이지에서 기존 세션 객체를 검사 할 수 없습니까? 아니면 페이지간에 이동할 때 잃어 버릴 수 있습니까? 사용자가 돌아 왔을 때 즉시이 초기 FacebookSession 개체를 만들고 그 후에 다른 페이지 인 Response.Redirect로 리디렉션한다고 가정 해 보겠습니다. 나는 그 물건을 잃어 버렸는가? 나는 그렇게 생각한다? 새 페이지 요청이 해당 사용자의 IIS에서 새 스레드를 생성하기 때문에? 그리고 나서 당신이 메모리에서 생성 한 어떤 물체라도 깨끗한 슬레이트로 닦아냅니다.

그래서 DB에 저장 한 다음 GetCurrentSession과 같은 메소드를 사용하여 현재 사용자를 찾아 테이블의 현재 세션 정보를 가져 와서 faceSession을 저장할 수있는 facebookUserID를 호출 할 수 있습니다. 토큰 등

바로?

마지막으로 언제든지 DB에서 해당 사용자를 확인하는 방법을 어떻게 알 수 있습니까? 고유 ID가 필요합니까? 그래서 내가 한 것은 기존 sessionID를 활용할 Pk 칼럼을 추가하는 것이 었습니다. 우리 사이트의 모든 사용자는 우리 사이트를 방문 할 때 얻을 수있는 전반적인 글로벌 세션입니다.

그래서 페이스 북 세션이 존재하는 경우 고유 ID를 사용하여 "글로벌 세션 ID"를 통해 내 테이블에서이를 조회 할 수 있습니다. 그러나 궁극적으로 내가 마주 치게되는 문제는 내 FacebookSession.cs 개체에서 GetCurrentSession()을 호출하기 위해서입니다. 어떻게 든 글로벌 ID를 전달해야합니다. 생성자를 통해이 작업을 수행 할 수 있습니다 (이 작업을 싱글 톤으로 만들지는 않습니다). 그러나 이제는 개체 및 다른 여러 개체가 사용자의 Facebook 세션을 조회하는 데 필요한이 글로벌 ID에 종속됩니다. 글쎄, 만약 우리가이 라이브러리/래퍼를 내가 PK로 글로벌 세션을 사용하고 싶지 않은 다른 프로젝트에서 만든 것을 재사용하고 싶다면, 나는 다소 엉망이된다.

그래서 지금 당장 두통이 있습니다. 내가 여기에 올바른 길을 가고 있다면, 나는 단지 몇 가지 의견과 검증을 원한다. 만약 내가 메모리, IIS, 쓰레드, 그리고 세션 상태를 공격하는 방법에 관해서라면, 바로 이것을 공격 할 것이다.

+0

기본 'HttpSession' 객체를'FacebookSession'이라고하는 자신 만의 구현으로 바꾸고 싶다고 생각하거나 자신의 FacebookSession 클래스로 일반 Session 객체를 활용하는 방법을 알고 싶습니까? ? – Abel

+0

Facebook Connect를 사용하고 있습니까? 그렇다면 FB.Init (또는 어떤 인증 체계를 사용하든)를 수행 할 때 Facebook Connect가 이미 인증 쿠키에 대한 권한을 부여합니다. 세션에서 다시 저장할 필요가 없습니다. 상태가 두 배가됩니다. 내가하는 일은 HttpContext.Request.Cookies (모든 요청에있는)를 읽는 "CurrentFacebookUserId"라는 서버 측 정적 속성으로 설정됩니다. 이 시나리오에서는 서버 측 세션이 전혀 필요 없습니다. – RPM1984

+0

은 내 자신의 맞춤 FacebookSession 클래스를 사용합니다. – PositiveGuy

답변

0

MSDN의 this description을 확인해야합니다.

+0

실제로 내가 찾은 것은 서버에 대한 모든 요청에 ​​클라이언트의 쿠키가 있다는 것입니다. 그래서 JS 쿠키를 확인하고 사용자 정의 세션 객체를 사용하여 해당 데이터 서버 측을 유지하고 사용할 수 있습니다. – PositiveGuy