CI 묻고 답하기

제목 로그인 유지 튜토리얼을 보다가 궁금해서요~!
글쓴이 절약사나이 작성시각 2014/04/29 19:07:28
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 19421   RSS
우선 초보인점 양해부탁드립니다;; 

http://agungmulyawan.com/codeigniter-create-remember-me-login-with-session

너무나 간단한 로그인 유지 소스를 보고서,
시도하였습니다. 로그인 유지를 확인할 수 있는 방법이 어떤게 있을까요? 

그리고, 이 방법으로 로그 아웃을 하면
세션이 삭제되는건가요? 

읽어주셔서 감사합니다~~! 
적용한 소스입니다. 
 
class User extends CI_Controller{
 
    function __construct() {
        parent::__construct();
 
        if ( $this->input->post( 'remember_me' ) ) // set sess_expire_on_close to 0 or FALSE when remember me is checked.
            $this->config->set_item('sess_expire_on_close', '0'); // do change session config
 
        $this->load->library('session');
    }
 
    function login() {
        if ( $this->input->post( 'login_submit' ) ) {
            $username = $this->input->post('username');
            $password = $this->input->post('password');
  
            if ( $this->my_model->check_login( $username, $password ) ) { 
 
                // do login success action as usual
 
            } else {
 
                // login failed handling here   
 
            }
        }
 
        // load view
        $this->load->view('simple_login_view');
    }
}

 
 다음글 주소찾기기능.. (4)
 이전글 if(strstr(base_url(), '.local... (2)

댓글

변종원(웅파) / 2014/04/29 19:25:56 / 추천 0
해당 부분은 로그인유지 체크박스 선택하고 폼전송했을 때 config에서 설정을 바꿔주는 겁니다.

7번째 줄의 설정은 브라우저를 닫았을때도 세션이 유지됩니다.

config에서 세션만료시간을 0으로 해놓고 저렇게 작업을 하겠네요.

테스트는 적용해서 로그인하고 브라우저를 닫았다가 다시 그 사이트에 접속했을 때 로그인 되어 있으면 됩니다.
몇시간을 켜놔도 되구요.
ando / 2014/04/30 09:14:23 / 추천 0
7번줄의 경우 remember me <== 체크 되어 있을때 세션의 만료시간을 두지 않는다는거에요.
만료시간을 두지 않는다면 계속 유지가 되겟죠?

그리고

function login() 함수에서

17 번 라인에서 if 문으로 인증에 성공하였을 때 처리를 하게끔 되어있는데요.

19번 라인에 세션에 정보를 저장하는 처리를 합니다. 보통 유저정보 전체를 세션에 저장하지 않구요. DB에 저장된 유져의 고유 키등의 값만 저장해놓습니다.

로그아웃할 경우에는

function logout() 함수를 구현해서
해당 함수에서 세션정보를 없애주면 되구요. ^^

위와같이 할경우 사용자가 로그인 했는지 체크는 해당 세션키가 선언이 되었는지, 키의 값이 있는지 여부에 따라 로그인 체크합니다.