TIP게시판
| gwangpa | |
|---|---|
|
안녕하세요 CI초보 입니다. 이번 프로젝트에 CI를 도입하려고 이것저것 테스트를 해 보고 있는 중입니다.
페이지별로 로그인 체크를 하려다 보니, 코드가 좀 어지럽고 버그가 나올 가능성이 농후해 보여서, 이 부분을 좀더 자동화? 시키는 방법을 생각했고, 그 내용을 공유 하고자 합니다.
CI를 사용하기 전에는 CakePHP를 사용한지라 CakePHP와 거의 비슷하게 했습니다. ^^;
일단 컨셉은 이렇습니다.
컨트롤러 인스턴스가 생성이 될때에 컨트롤러에 설정된 로그인 없이 접근이 가능한 메소드(액션) 정의를 확인하고, 컨트롤러의 메소드(액션)이 실행되기 전에 설정값과 인증 여부를 확인하여 접근이 불가능 하면 로그인 페이지로 이동일 시킨다. 입니다.
컨트롤러 인스턴스가 실행될때에 어떤 기능을 실행을 시켜야 하는데 알아보니 CI에서는 hook이라는게 있고 그중에 제가 원하는 시점이 post_controller_contruct 가 있더군요.
그래서 일단 hook이 가능하게 config를 수정 했습니다.
application/config/config.php
$config['enable_hooks'] = TRUE; 그 다음에는 hook을 설정합니다.
$hook['post_controller_constructor'][] = array(
'class' => 'Acl', // 뭐 이름은 Acl이라고는 했는데 적당히.. ㅎㅎ
'function' => 'checkPermission',
'filename' => 'Acl.php',
'filepath' => 'hooks'
);
이렇게 하고 저 설정에 맞게끔 파일을 생성합니다.
application/hook/Acl.php
<?php
class Acl {
function checkPermission() {
$CI =& get_instance();
if (isset($CI->allow) && (is_array($CI->allow) === false OR in_array($CI->router->method, $CI->allow) === false)) {
if (1) { // 로그인을 했는지 판단을 하는 로직을 넣으면 되겠죠.
// redirect url도 알아서...
redirect('/account/signin?next=' . urlencode($CI->uri->ruri_string()));
}
}
}
}
?>
그리고 컨트롤러에서 로그인없이도 허용할 수 있는 메소드명을 정의 합니다.
application/controller/welcome.php
<?php
class Welcome extends Controller {
function Welcome() {
parent::Controller();
$this->allow = array('index', 'method1', 'method2'); // index, method1, method2 메소드만 로그인 접근이 가능하게 설정한 것입니다.
}
function index() {
}
function method1() {
}
function method2() {
}
}
?>
이렇게 해서 컨트롤러마다 construct 부분에 로그인 없이 접근 가능한 메소드명만 적어 놓으면 됩니다. 해놓고 나니까 이거 완전히 CakePHP랑 똑같네요. |
|
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
| 번호 | 제 목 | 글쓴이 | 날짜 | 조회 | 추천수 |
|---|---|---|---|---|---|
| 829 | HMVC 5.4 & Template_ 타로구조 만들기 [1] | 타로 | 2012-02-02 | 100 | 0 |
| 824 | CI lang팩 -> Javascript lang팩 [4] | KangMin | 2012-01-25 | 184 | 0 |
| 823 | anchor_popup 헬퍼 화면 정 가운데 띄우기.. [0] | DJ구스 | 2012-01-17 | 149 | 0 |
| 822 | [자바스크립트] 창을 화면 정중앙에 위치하게 계산하기 [0] | 웅파 | 2012-01-11 | 182 | 0 |
| 815 | hook에서 선언한 변수를 컨트롤러에서 사용하기 [2] | 웅파 | 2011-12-27 | 368 | 0 |
| 812 | mysql 부분적인 에러 핸들링 처리 [2] | EziX | 2011-12-20 | 390 | 0 |
| 811 | 컨트롤러 외부에서의 종료방법 [1] | EziX | 2011-12-20 | 302 | 0 |
| 809 | icodekore sms 모듈 쓰는 분들 참고하세요.. [0] | namGoos | 2011-12-09 | 514 | 0 |
| 803 | Upgrading from 2.0.3 to 2.1.0 [5] | namGoos | 2011-12-06 | 493 | 0 |
| 794 | .svn 폴더 삭제 하기 [7] | 불의회상 | 2011-11-30 | 452 | 1 |
| 792 | [1원] 윈도우서버+mssql 에서 CLI(Comm.. [2] | 터프키드 | 2011-11-29 | 458 | 0 |
| 786 | Form_validation 라이브러리 less_t.. [2] | EziX | 2011-11-17 | 460 | 0 |
| 780 | 1원팁. 저의 Template_ 이용방법입니다. [2] | namGoos | 2011-10-31 | 995 | 0 |
| 773 | MYSQL 자동으로 시간 설정 [5] | 불의회상 | 2011-10-26 | 659 | 0 |
| 767 | 모바일 웹사이트 개발시 참조하시면 좋을 것 같네요~ [7] | 탱크 | 2011-10-20 | 781 | 1 |
| 764 | EUC-KR 판정 방법 [3] | 불의회상 | 2011-10-18 | 727 | 0 |
| 758 | eclipse Autocomplete 업데이트 버전. [4] | EziX | 2011-10-14 | 937 | 0 |
| 751 | 글로벌 사이트를 위한 시간(GMT) 적용 [8] | 웅파 | 2011-10-12 | 518 | 0 |
| 744 | 포토바다 개발 내규 문서 공개합니다. [7] | namGoos | 2011-10-10 | 846 | 1 |
| 735 | jquery cheat 1.0 ~ 1.6 [6] | 웅파 | 2011-10-06 | 759 | 0 |

