単純な権限制御は、CI フレームワークのフック、cihook を通じて実現されます
実際の状況によれば、2 つのファイルが必要です。1 つは権限制御クラス Acl で、もう 1 つは config ディレクトリに配置された権限設定ファイル acl.php です。
Acl クラスは application/hook/acl.php に配置されます。 application/config/config.php ファイルを使用してフックを有効にし、config ディレクトリにhook.php ファイルを設定します。
1. config.phpファイルのフック機能をオンにします
コードをコピーします コードは次のとおりです:
/*
|------------------------------------------------- ------------------------
| システムフックを有効/無効にする
|------------------------------------------------- ------------------------
|
| 「フック」機能を使用したい場合は、
によって有効にする必要があります。
| この変数を TRUE (ブール値) に設定します。詳細については、ユーザー ガイドを参照してください。
|
*/
$config['enable_hooks'] = TRUE;
2.hook.phpファイルを設定します
コードをコピーします コードは次のとおりです:
/*
| -------------------------------------------------- - ------------------------
| フック
| -------------------------------------------------- - ------------------------
| このファイルを使用すると、コアをハッキングせずに CI を拡張するための「フック」を定義できます
| ファイルについては、ユーザーガイドを参照してください:
|
| http://codeigniter.com/user_guide/general/hooks.html
|
*/
$hook['post_controller_constructor'] = array(
'クラス' => 'Acl',
'関数' => '認証',
'ファイル名' => 'acl.php',
'ファイルパス' => 'フック'
);
具体的なパラメータの説明については、ドキュメントのリンク アドレスを参照してください。ここでは post_controller_constructor の値に特に注意してください。状況に応じて異なる値を選択できます。
3. 権限設定ファイル acl.php を作成し、config ディレクトリに配置します。
コードをコピーします コードは次のとおりです:
$config['AUTH'] = array(
SUPER_ADMIN => 配列(
;
'admin' => array('index', 'logout'),
)、
ADMIN => 配列(
'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->status = 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();
以上は、単一の制限制御が実現されているだけであり、小さなパートナーは、必要に応じて、自由に拡張できます。
http://www.bkjia.com/PHPjc/939406.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/939406.html技術記事 CI フレーム内ではフックを介して単一の制限制御が実現されます。cihook は自分の状況に応じて 2 つのファイルが必要です。1 つは制限制御クラス、Acl、もう 1 つは制限構成の文書です...