ホームページ >バックエンド開発 >PHPチュートリアル >CI フレームワークのフックを介した単純な権限制御の実装、cihook_PHP チュートリアル

CI フレームワークのフックを介した単純な権限制御の実装、cihook_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:10:05898ブラウズ

単純な権限制御は、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

tru​​ehttp://www.bkjia.com/PHPjc/939406.html技術記事 CI フレーム内ではフックを介して単一の制限制御が実現されます。cihook は自分の状況に応じて 2 つのファイルが必要です。1 つは制限制御クラス、Acl、もう 1 つは制限構成の文書です...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。