CI 묻고 답하기

제목 User_Authentication(사용자_검증)_1.docx 를 보다가
글쓴이 송군 작성시각 2011/09/18 12:57:08
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 16117   RSS
안녕하세요, MAX님이 올려주신 User_Authentication(사용자_검증)_1.docx를 보며 따라해보고 있는데
무언가 막히는 것이 있어 이렇게 올려봅니다.. 혼자 풀어보려고 끙끙 댔지만 너무 답답해서 글을 쓰게 되네요..-_-휴

해당 문서에 나와있는대로 모든 코드를 작성하고 실행시켜 보았습니다.(상속 및 생성자코드는 2.x버전으로 수정하여 하였습니다)


먼저 회원가입부터 한 후 로그인을 하였습니다.
로그인 완료 페이지가 나오고, 그 페이지에서 세션을 찍어보았더니 무리없이 잘 나오더군요..
세션에 추가적인 값도 집어넣어서 잘 나오는지 확인했습니다.


허나, 그 페이지에서 dash보드로 이동하게하는 링크가 있어서 클릭하면
세션이 날라가는건지 다시 로그인 화면으로 넘어갑니다-_-;;
①에서
$str = $this->account_model->logged_in();
echo $str;
을 해보면 로그인을 한 후이기 때문에 TRUE값인 1이 찍힙니다.

그러나 ②에서
$str = $this->account_model->logged_in();
echo $str;
를 해보면 아무값도 안찍힙니다. TRUE가 아니라면 최소 0이라도 찍혀야 하는데..
왜일까요? 모델을 읽지 못하는 것일까요? 생성자 함수에
$this->load->model('account_model'); 라고 되어있는데... 하

뭐가 문제죠?

 다음글 form검증 사용 하시나요?? (7)
 이전글 개념적인 질문을 드립니다 ^^;; (12)

댓글

다니엘SEO / 2011/09/18 13:18:49 / 추천 0
 혹시...세션의 uri 설정 부분 보셨나요?? config파일에서요
송군 / 2011/09/18 13:22:40 / 추천 0
다니엘SEO님 그게 무슨 말씀이죠?
세션의 uri는 처음듣습니다. 혹시 config파일에서 세션관련하여 뭔가 더 설정해야할게 있나요?

메뉴얼에는
$config['sess_cookie_name']  = 'ci_session';
$config['sess_expiration']  = 7200;
$config['sess_expire_on_close'] = FALSE;
$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'] = TRUE;
$config['sess_time_to_update'] = 300;

이것밖에 설명이 안되어있던데;; 혹시 제가 뭔가 빠뜨린게 있나요?
config파일에 세션관련하여 이것밖에 없는것 같아요..
다니엘SEO / 2011/09/18 13:38:04 / 추천 0
 CI 세션은 세션이 아니라고하더라구요.

//쿠키설정
$config['cookie_prefix'] = "";
$config['cookie_domain'] = ".domain.com";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;

이 부분도 설정해보세요~
다니엘SEO / 2011/09/18 13:39:49 / 추천 0
 .domain.com 부분에서 .(쩜) 잊지 마세요 ㅎ
송군 / 2011/09/18 18:11:04 / 추천 0
'    ');;  해보았는데 똑같아요...ㅠ 하
송군 / 2011/09/18 20:18:38 / 추천 0
자답입니다.
오늘 하루종일 이것만 붙잡다가 겨우 문제가 뭔지 알았네요.

config.php 에서 sess_match_useragent 를 FALSE로 주었더니 잘 되었습니다.
세션관련된 게시글을 하나씩 찾아보다가 웅파님이 답변한 댓글을 보고
혹시나 해서 해보았더니 잘 되네요.. 하ㅠㅠ감격의 눈물이..

메뉴얼의 세션 내용중 이 내용은 맨 아래 명시되어 있는데
설명이 세션데이터를 읽어들일때 User Agent 를 일치시킬지 설정합니다. 라고만 되어있어서
이게 무슨말이지? 일단 넘어가자 하고 넘어간게 화근이었던 것 같습니다-_-;;

아직도 저게 무슨 뜻인지 모르겠네요, 유저어젠트를 일치시킨다는거..
알고 계신분은 아래 댓글로 좀 설명좀 해주세요 ^^;;
최용운 / 2011/09/18 22:46:53 / 추천 0
 user agent 정보는 브라우저 정보입니다. 예를 들어 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1
이런 것들이죠. 테스트 해보진 않았지만, 생성된 세션에 대해 브라우저 정보까지 같아야 동일한 세션으로 판단한다는 의미인거 같습니다.
송군 / 2011/09/18 23:11:24 / 추천 0
Re : 최용운님/

그렇군요.. 그렇다면 생성된 세션에 담긴 브라우저 정보가 저의 브라우저와 일치하지 않았기 때문에 생긴 일이었다는건 잘못된 값을 저장하고 있다는 것이군요.
흠..실제로 dB를 확인해보니까 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; 이라고 찍히는데
저는 윈도우 7을 사용중이고 모질라4.0이 아닌 인터넷 익스플로러 8을 사용중이었어요.
값이 제대로 들어가지 않았던 거군요.-_-;;;

흠. 이것도 어딘가에서 설정을 잘못해줬기 떄문인지 아닌지는 좀 찾아봐야 할 것 같습니다.
알려주셔서 감사합니다.!  : )
변종원(웅파) / 2011/09/19 09:59:55 / 추천 0
아마 2.0.3에서는 버그픽스 되었을거라고 생각이 되는데요(바뀐 부분을 대충 봐서..)
user agent 필드도 기존 50에서 더 크게 바뀌었을겁니다. 50이면 잘려서 들어가거든요.