실제 상황에 따라 두 개의 파일이 필요합니다. 하나는 권한 제어 클래스인 Acl이고 다른 하나는 config 디렉터리에 있는 권한 구성 파일 acl.php입니다.
Acl 클래스는 application/hook/acl.php에 있습니다. application/config/config.php 파일을 통해 후크를 활성화하고 config 디렉터리에 Hook.php 파일을 구성합니다.
1. 후크 기능을 활성화합니다. config.php
/*
|------------------------------------------------- -------------
| 시스템 후크 활성화/비활성화
|------------------------------------------------- -------------
|
| '후크' 기능을 사용하려면 다음을 통해 활성화해야 합니다.
| 이 변수를 TRUE(부울)로 설정합니다. 자세한 내용은 사용자 가이드를 참조하세요.
|
*/
$config['enable_hooks'] = 참;
2. Hook.php 파일을 구성합니다
/*
------------------------------------------------- | - -------------
후크
------------------------------------------------- | - -------------
| 이 파일을 사용하면 코어를 해킹하지 않고 CI를 확장하기 위한 "후크"를 정의할 수 있습니다
| 파일 정보는 사용자 가이드를 참조하세요.
|
|
http://codeigniter.com/user_guide/general/hooks.html
|
*/
$hook['post_controller_constructor'] = 배열(
'클래스' => 'Acl',
'함수' => '인증',
'파일 이름' => 'acl.php',
'파일 경로' => '후크'
);
구체적인 매개변수 설명은 문서의 링크 주소를 참조하세요. 여기서 post_controller_constructor 값에 특히 주의하세요. 상황에 따라 다르게 선택할 수 있습니다.
3. 권한 구성 파일 acl.php를 작성하여 config 디렉터리에 넣습니다.
$config['AUTH'] = 배열(
SUPER_ADMIN => 배열(
'admin' => array('index', 'logout'),
),
관리자 => 배열(
'admin' => array('index', 'logout'),
),
게스트 => 배열(
'admin' => array('index', 'logout'),
),
);
이것은 내 상황에 따른 정의일 뿐 실제 데이터에 근거한 것은 아닙니다. 또한 쉽게 로드하고 사용할 수 있도록 $config에 제출해야 하는 주요 변수 이름도 있습니다.
4. 특정 권한 제어 Acl 클래스 작성
Acl 클래스 {
비공개 $url_model;
비공개 $url_method;
비공개 $CI;
함수 Acl()
{
$this->CI =& get_instance();
$this->CI->load->library('session');
$this->url_model = $this->CI->uri->segment(1);
$this->url_method = $this->CI->uri->segment(2);
}
함수 인증()
{
$user = $this->CI->session->userdata('USER');
if(비어 있음($user))
$user->상태 = 0;
$this->CI->load->config('acl');
$AUTH = $this->CI->config->item('AUTH');
if(in_array($user->status, array_keys($AUTH))){
$controllers = $AUTH[$user->상태];
if(in_array($this->url_model, array_keys($controllers))){
if(!in_array($this->url_method, $controllers[$this->url_model])){
show_error('您无权访问该功能,该错误已经被记录!点击
返回');
}
}그밖에{
show_error('您无权访问该模块,该错误已经被记录!点击
返回');
}
}
그 외
show_error('错误적용户类型,该错误已经被记录!点击
返回');
}
}
整体上大体是这样적형형式, 最后还是要根据自己的实际情况来确定。
需要注의심스러운是:
$this->CI =& get_instance();