제목 | CI hooks 로 로그인 인증 체크하기 질문 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 학학이 | 작성시각 | 2016/09/07 13:58:18 |
|
|||
CI hooks 질문있습니다.
기존 코드는 각 컨트롤러 생성자에서 현재 로그인이 되어 있는지 체크합니다.
controllers/user.php $this->cookie = $this->loginlibrary->login_check(); // if ($this->cookie['is_login'] == true) { // 로그인 되어 있다면... $this->user_id = $this->cookie['user_id']; } else { if ( empty($_SERVER['REQUEST_URI']) ) $return_url = "/user/info"; else $return_url = $_SERVER['REQUEST_URI']; move_login_page($return_url); }
문제는 모든 컨트롤러마다 생성자에 이 코드가 존재합니다.
그래서 이 부분을 찾아 보던중 hooks 를 알게 되었습니다. http://www.codeigniter-kr.org/bbs/view/tip?idx=8009&page=4&view_category=&lists_style= 이 내용을 읽고 적용하려고 하는데 hooks를 TRUE로 주면 아무것도 안나옵니다.
hooks/Acl.php <?php class Acl { function checkPermission() { $CI =& get_instance(); echo "aaaa"; if (isset($CI->allow) && (is_array($CI->allow) === false OR in_array($CI->router->method, $CI->allow) === false)) { $this->cookie = $this->loginlibrary->login_check(); if ( $this->cookie['login_chk'] == true ) { // 로그인 되어 있다면... $this->user_id = $this->cookie['user_id']; } else { if ( empty($_SERVER['REQUEST_URI']) ) { $return_url = "/user/info"; } else { // $return_url = $_SERVER['REQUEST_URI']; redirect("https://www.test.com/login/login_form.php"); } } } } } ?> post_controller_constructor 가 메소드들이 호출되기 직전에 후킹해서 어떤 일련의 작업을 마치고 다시 돌아온다는 개념으로 이해하고
이런식으로 테스트를 해보려 하는데 흰 페이지만 나올뿐입니다. ( 모든 페이지 모두 )
Acl.php 에서는 로그인 상태가 아닐때만 redirect하고 로그인 상태일때는 아무것도 안하는 건가요? hooks에서 뭐가 잘못되면 흰 페이지가 나오나요? 소스보기해도 아무것도 없습니다.
추가적으로 만약 hooks 가 제대로 잘 작동할때 hooks 가 가져온 쿠키정보에서 $user_id를 넘겨주려면 return 하면 되나요?> |
|||
다음글 | CI 세션파일 문의 드립니다. [자답] (2) | ||
이전글 | CI 중복 제거 함수 질문 (3) | ||
kaido
/
2016/09/07 15:08:30 /
추천
0
|
변종원(웅파)
/
2016/09/07 15:29:53 /
추천
0
$this->loginlibrary->login_check(); 이것도 사용하려면 선언해줘야 합니다.
|
학학이
/
2016/09/07 16:22:28 /
추천
0
@kaido 그렇군요. 그럼 hooks에서 생성된 변수는 post_controller_constructor 이후 각 컨트롤러로 돌아오면 삭제되나요? hooks에서 생성한 변수를 각 컨트롤러에서 사용하려면 다른작업을 해줘야하나요?
@번종원 감사합니다. 각각 완전 다른거로 생각해야하네요 |
hook 하고 컨트롤러 영역하고 전혀 다른 영역이라고 생각 하시는게 편해요.