개발 Q&A

제목 HTTP와 HTTPS 간 로그인 세션 공유 질문 드립니다.
카테고리 PHP
글쓴이 김재현 작성시각 2017/09/24 22:32:23
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14179   RSS

안녕하세요...  6개월 접한 초보입니다.

열심히 찾아 봤지만 해결이 안되서 질문을 드립니다.

사이트는 가비아에 있는데요.

사이트 URL 이 sample.com, https://sample.com:5000  입니다.

로그인 할때 만 https://sample.com:5000  주소를 사용합니다.

각가의 URL 에서는 세션이 정상적으로 처리 됩니다.

sample.com 에서 로그인으로 https://sample.com:5000 주소에서 처리되고

다시 sample.com 으로 돌아 오면 세션이 양쪽 URL에서 다 처리가 안됩니다.

따라서 위 두 주소간 세션 공유는 가능한 일입니까?

가능하다면 어떻게 조취를 취햐야 될까요.

 

참고로 config.php 정보 첨부합니다.

$config['sess_cookie_name']        = 'ci_session';
$config['sess_expiration']        = 36000;
$config['sess_expire_on_close']       = TRUE;
$config['sess_encrypt_cookie']    = FALSE;
$config['sess_use_database']      = TRUE;
$config['sess_table_name']        = 'ci_sessions';
$config['sess_match_ip']          = FALSE;
$config['sess_match_useragent']        = FALSE;
$config['sess_time_to_update']    = 36000;

$config['cookie_prefix']   = "sample_";
$config['cookie_domain']   = ".sample.com";
$config['cookie_path']    = "/";
$config['cookie_secure']   = FALSE;
$config['global_xss_filtering'] = FALSE;

$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

 

세션 처리하는 부분

$this->session->set_userdata("id",$result->id);      //회원번호
$this->session->set_userdata("type",$result->type);  //회원구분
$this->session->set_userdata("name",$result->name);  //회원명
$this->session->set_userdata("email",$result->email);    //이메일
$this->session->set_userdata("Phone",$result->phone);    //연락처

 

 

 다음글 코드이그나이터 객체 배열 질문드립니다! (5)
 이전글 인쇄창이 출력 이후 javascript 기능들이 작동하... (1)

댓글

한대승(불의회상) / 2017/09/25 09:54:27 / 추천 0

공유해주신 코드상으론 세션 공유가 안되는 특별한 이유를 찾을수가 없군요.

동일한 프로토콜(http 혹은 https)에서 세션 공유에 문제가 없나요?

김재현 / 2017/09/25 11:27:04 / 추천 0
동일한 프로토콜간 세션공유는 잘됩니다.
김재현 / 2017/09/27 00:16:19 / 추천 0

자답입니다. 답변 주신 것을 바탕으로 해결했습니다.

먼저 로그인 로직이 ajaxForm 으로 결과 코드 받아서 처리 합니다.

<?php echo $this->session->userdata("session_id");?>

위 코드로 확인해 보면 http://sample.com, https://sample.com:5000 두개의 사이트에서 세션 아이디가 동일하게 생성됩니다.

근데 https://sample.com:5000 주소를 ajax로 호출하게 되면 세션 아이디가 다르게 생성됩니다.

세션 다른게 생성되는 것은 ci_session 테이블에서 확인했습니다.

그래서 로그인 입력 폼에

<input type="hidden" id="Session_id" name="Session_id"  value = "<?php echo $this->session->userdata("session_id");?>" />

추가한 다음 로그인 처리하는 컨트롤 파일에 아래 코드 추가해서

$Sess_key = $this->input->post("Session_id") ;
$this->session->set_userdata("session_id", $Sess_key);

해결했습니다.