CI 묻고 답하기

제목 다른 도메인에서 세션 유지 하는것..
글쓴이 이원재 작성시각 2012/03/26 16:33:25
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 28720   RSS
안녕하세요. CI초보에요.

얼마 전에 방바닦을 긁다가 문득...  cafe24에서 500원짜리를 5개 구입했어요.ㅜㅜ
질렀죠..

목적은...
1번서버는 실서버...
2번서버는 로그인 전용 서버
3,4,5는 자료 저장서버.
로 구성을 해볼까? 생각했거든요..

그래서 1번서버는 메뉴를 누르면 iframe으로 3,4,5에 접근하는 구조로 만들었어요.


전체적인그림은 이렇습니다.

1) 1번서버에서 iframe에 key=8937498237498273 를 넘겨서 3,4,5를 호출한다.
2) 3번서버가 2번서버에 RCP-XML로 접근을 시도해서 ci_session테이블에 session_id를 이용해 user_data를 받아옵니다.
3) session_id가 없으면 3,4,5번 서버는 2번의 로그인 화면을 key=8937498237498273를 붙여서 redirect한다.
4) 2번서버는 key가 있는지 체크 하고 키를 session_id로 입력하도록 처리 한다.
      (Session.php의 
       $this->userdata = array(
       'session_id' => '8937498237498273',//md5(uniqid($sessid, TRUE)),
       'ip_address' => $this->CI->input->ip_address(),
       'user_agent' => substr($this->CI->input->user_agent(), 0, 120),
       'last_activity' => $this->now,
       'user_data'  => ''
       );
5) 로그인이 완료된 2번은 다시 3,4,5중 호출된 서버로 redirect한다.
6)  다시 2)의 작업을 수행한다.
7) user_data가 넘어왔으면 여기서 uid를 추출해서 ......................

여기서 쿠키에다가 넣야되나... DB에다 밖아야 되나... 머리가 멍해지면서 다시 방바닦을 긁고 있는데요.
사실 저는 CI를 잘몰라요.. 머냐님 소스 가져다가 만져보고 있습니다.
iframe은 닫을수 있고요. 다시 3번,또는 4번 또는 5번에 들어가도 세션은 유지가 되어야 하는데.
닫으면 세션 유지될지도 모르겠고. 다시 로그인 만 죽어라 하는건 아닌가..
제가 혼자 미쳐서 산으로 가고 있는걸까요??
어떻게 해야 효율적인가요?????????


 다음글 cart 클래스는 번역메뉴얼에는 빠져있네요. (2)
 이전글 데이터베이스 클래스 질문있습니다. (3)

댓글

변종원(웅파) / 2012/03/26 17:18:00 / 추천 0
각 서버들에 2차 도메인으로 주고 쿠키를 공유하는 방법이 있구요.

고전적인 api(토큰) 방식으로 로그인서버에서 세션 아이디에 해당하는 토큰을 만들어서 내려보내고
프로그램에서 항상 토큰 존재여부와 토큰 만료여부를 비교하여 처리하는 방법이 있습니다.


어쨌든 두 방식 다 항상 로그인 여부를 체크해야하는 것은 동일합니다.
이원재 / 2012/03/27 10:04:31 / 추천 0

어제 마져 만들어봤는데
역시 이 방식은 문제가 많았습니다.
세션 공유를 위해서 파라메터를 체크하는 로직뿐아니라. 
CI는 세션을 주기적으로 update하는데 그것도  방식을 바꿔야했고
세션 삭제하고 리턴url유지 등의 잘잘한 문제가 많았습니다.

클럽 이라는 계념으로 사용자가 무료게시판소스를 자신의 호스트에 설치하며
사이트를 늘려가는 구조를 생각했기때문에 도메인 유지 방식은 사용할수가 없었구요.
api토큰이라는 방식이 뭔지 찾아봐야겠네요.
답변 감사드립니다.

 

criuce / 2012/03/27 14:39:25 / 추천 0
인증 서버를 별도로 만드시고 클라이언트에서 로그인,로그아웃,로그인확인 등을 인증서버와 api를 통해 하면 되지 않을까요?
핵잠함장 / 2012/03/27 20:25:57 / 추천 0
구글에서 제공하는 SSO의 구조와 프로세스를 참조해보시면 도움이 될수도있을듯합니다.

http://support.google.com/a/bin/answer.py?hl=ko&answer=60224

도움이 되실지 모르겠네요.. ^^;