CI 묻고 답하기

제목 외부에서 Controller 호출시 $_SESSION 유지 안되는 문제 질문 드립니다!
카테고리 CI 2, 3
글쓴이 papaw 작성시각 2020/02/14 16:05:43
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 12988   RSS

안녕하세요.

기존에 CI로 개발하고 운영중인 소스(API)를

다른 프로젝트에서 가져다 쓰려고 합니다.(외부에서 CI Controller 호출)

react로 개발진행중이고 API 호출은 잘 됩니다..

 

그런데 로그인시 Controller에서 set_userdata를 하는데요.

set 하자마자 바로 찍어보면 정상적으로 데이터가 출력이 되는데

ex) Member.php

$this->session->set_userdata($login_data);

print_r($this->session->userdata());

=> 정상 출력.

 

로그인 이후에 다른 페이지에서 API 호출시 session->userdata를 확인하면 텅 비어있습니다...

ex) Member.php

public function is_login_chk() {

    print_r($this->session->userdata());

}

=> 내용 없음. ( 시간 뿐 )

 

이걸 어떻게 연결시켜야할지 하루종일 스택오버플로우며 구글이며 뒤져봐도 명확한 해결책을 찾지못해 이렇게 질문 남겨봅니다 ㅜㅜ

 

session은 autoload에서 로드하였으며, application/config/config.php 파일도 이래저리 수정해 봤지만.. 전부 실패했습니다..

 

CI 뷰 => CI 컨트롤러 호출할 때는 문제가 없었던거같은데 처음으로 외부에서 호출하다보니 미숙한 부분이 많네용..

 

혹시 비슷한 사례 해결한 경우가 있으시거나.. 다른 조언이라도 주실수 있으신분 계시면 감사하겠습니다!

 다음글 application 디렉토리 분리 조언 구합니다~~ (2)
 이전글 프로젝트 단위가 궁금합니다. (2)

댓글

변종원(웅파) / 2020/02/14 16:29:51 / 추천 0
쿠키 체크에 아이피 및 유저에이전트 가 true 로 되어 있으면 false로 바꾸고 해보세요.
papaw / 2020/02/14 16:33:20 / 추천 0

Re: 변종원(웅파) 

application/config/config.php

$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;

 

이게 맞다면 두 항목은 모두 false인 상태 입니다..

papaw / 2020/02/14 16:55:51 / 추천 0

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'sc_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = APPPATH . 'sessions/';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
 
현재 config는 위와 같습니다.
엽토군 / 2020/02/16 12:45:51 / 추천 0
로그인 자체는 어떻게 처리하고 계신가요? "외부"란 얼마나 외부인가요? (서버가 다른지? 아니면 서버는 같은데 도메인이 다른지? 아니면 서브도메인 인지?)

저희회사의 경우에는 재수가 없어서 결국 토큰 기반으로 전환했어요. 쿠키에 난수가 박혀 있고, 이 난수는 암호키만 있으면 어느서버에서나 바로 json으로 복호화되는 거지요. 리액트 도입하셨다고 하니 JWT 써보시는 것도 방법 아닐까 하네요.
papaw / 2020/02/16 16:43:11 / 추천 0

Re: 엽토군

 

CI는 서버에 올라가 있고, react는 아직 개발중이라 로컬입니다.

axios를 통해서 CI Controller를 호출하고 있으며, 로그인 성공시 유저정보를 json데이터로 내려받아 사용합니다.

근데 로그인 성공시 (API 호출 후 정상 리턴 되었을 때) 쿠키정보가 생성이 안되는거같은데 이건 상관없는것인지 모르겠네요..

 

하.. 설명이 제대로 된건지도 모르겠네요 .. 어렵습니다..

 

JWT같은경우는 다른 서비스 개발시 적용했었으나 이 프로젝트는 이미 해당 API를 다른 앱, 웹에서 사용중인데다 공식적으로는 저는 CI에 관여하는게 아닌 작성된 API를 이용해 프론트앤드를 구축하는 작업을 맡고있는터라.. 섣불리 로그인 방식 자체를 변경하는것은 어렵네요.

 

여러모로 어렵네요.. ㅎ.ㅎ..