CI 묻고 답하기

제목 IE에서 간혈적으로 로그인 안되는 현상
카테고리 CI 2, 3
글쓴이 홍즈 작성시각 2016/12/13 13:05:55
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 19359   RSS

 

 

안녕하세요 눈팅만 하며 정보만 쏙쏙 동냥하다가 처음 글 남깁니다.(송구스럽습니다)

저희 회사에서 운영중인 솔루션에서 로그인 관련 문제가 나타나서 질문드립니다.

 

약 6개월 이상 아무 문제 없이 잘 되던 로그인 부분이 최근들어 계속 문제가 부각되고 있습니다.

IE를 제외한 다른 브라우저에선 해당 문제가 발생되지 않고 IE10 이하에서 발생되는 문제로 보입니다.

 

현상은 로그인 잘 되어 있다가 어느순간 세션이 풀려버리고, 그 뒤부턴 해당 IE에서 로그인이 되지 않는 현상입니다.

이게 모든 곳에서 다 그런것이 아니라 불특정 다수식으로 일어납니다. 한번 로그인이 되지 않으면 몇일간 되지 않다가 또 어느땐 되고,

계속 로그인문제가 일어나지 않는 PC도 있고.  브라우저 설정 문제인가 싶은데 문제가 없는 PC의 설정과 똑같이 해도 그렇습니다.

 

코드이그나이터에 IE 세션 버그가 있다는 것은 검색을 통해서 보아왔지만 이것에 대한 해결책은 세션 라이브러리를 통채로 바꾸는 것밖에 없는지요. IE 세션버그가 있다면 처음 개발부터 안되던가 다른 PC들에서도 안되면 모르겠는데 여지껏 잘 사용하다가 한두달전부터 갑자기 발생된 문제라 이게 코드이그나이터의 문제인지, 다른문제인지 파악이 안되는 실정입니다. 개발 PC에선 모두 로그인이 정상적으로 잘 되는데 사용자들 PC에서 갑자기 문제가 발생하니 원인파악하기가 매우 힘드네요.

 

Config.php 중 세션 관련 부분은 다음과 같습니다

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'nzinesession';
$config['sess_expiration'] = 60*60*4;      // 4 hour
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;     // 5 min
$config['sess_regenerate_destroy'] = FALSE;    
$config['sess_match_useragent']    = FALSE;

sess_cookie_name 에서 언더바를 빼면 해당문제를 해결할 수 있다고 해서 뺐는데도 같은문제가 발생합니다.

혹시 같은 문제를 겪다가 해결하신 분이나, 해당 문제를 확인하기위해 뭘 확인해야하는지 아시는분 계신가요?

 다음글 Message: pg_connect(): 에러 확인 ... (1)
 이전글 session 동작 과정/원리 (1)

댓글

변종원(웅파) / 2016/12/13 14:47:14 / 추천 1

3점대 이신거 같은데 3점대는 그런 문제가 해결된 버전입니다.

db 세션으로 바꾸시고 db의 내용을 보면서 디버깅해보세요. 로그인이 풀리는 경우는 대부분 유저데이터가 있는 세션위에 빈 세션이 하나 더 생겨서 생깁니다.

kaido / 2016/12/13 15:47:44 / 추천 1

1.x 에도 2.x 에도 그런 문제가 종종 나타나곤 했습니다.

얼른 ci4로 넘어갔음 좋겠어요. 

ci4에선 애네들이 결국 케어를 못했는지, 네이티브 세션으로 회귀 하더군요.

변종원(웅파) / 2016/12/13 17:33:53 / 추천 1
마침 팁게시판에 이런게 있네요. http://cikorea.net/bbs/view/tip?idx=15993&lists_style=
홍즈 / 2016/12/14 16:59:59 / 추천 0

친절한 답변 감사드립니다 웅파님 , kaido님.  걸어주신 링크의 내용은 이미 저도 시도해본것인데 해결이 안되네요 ㅜㅜ

'로그인이 풀리는 경우는 대부분 유저데이터가 있는 세션위에 빈 세션이 하나 더 생겨서 생깁니다.' 라고 하셨는데 혹시 빈 세션이 하나 더생기는 것을 막는 방법은 없나요?  유저수가 꽤 되는 서비스인데 로그인문제로 하루에 전화가 몇통씩 오는 실정입니다 ㅜㅜ

 

변종원(웅파) / 2016/12/14 17:50:32 / 추천 0

검색해서 나온 상황들을 대부분 적용해서 저는 재현이 안되고 있습니다.

기본적으로 ip나 user agent match를 false로 하고 세션명에서 언더바 제거.

 

ajax 호출시 세션이 업데이트 되는 경우가 있어서 그걸 방지하도록 확장해서 사용중입니다.

<?php
class MY_Session extends CI_Session {

    // --------------------------------------------------------------------

    /**
     * sess_update()
     *
     * Do not update an existing session on ajax or xajax calls
     *
     * @access    public
     * @return    void
     */
    public function sess_update()
    {
        $CI = get_instance();

        if ( ! $CI->input->is_ajax_request())
        {
            parent::sess_update();
        }
    }

}

// ------------------------------------------------------------------------
/* End of file MY_Session.php */
/* Location: ./application/libraries/MY_Session.php */