首頁 後端開發 php教程 CI框架中通过hook的方式实现简单的权限控制_PHP

CI框架中通过hook的方式实现简单的权限控制_PHP

May 31, 2016 pm 01:18 PM
ci框架 權限控制

根据自己的实际情况,需要两个文件,一个是权限控制类,Acl,另外一个是权限配置的文件acl.php放在了config这个目录下。

Acl这个类放在了application/hook/acl.php。通过application/config/config.php文件开启hook,并且配置config这个目录下的hook.php文件。

1、开启hook功能,config.php这个文件

代码如下:


/*
|--------------------------------------------------------------------------
| Enable/Disable System Hooks
|--------------------------------------------------------------------------
|
| If you would like to use the 'hooks' feature you must enable it by
| setting this variable to TRUE (boolean).  See the user guide for details.
|
*/
$config['enable_hooks'] = TRUE;

2、配置hook.php这个文件

代码如下:


/*
| -------------------------------------------------------------------------
| Hooks
| -------------------------------------------------------------------------
| This file lets you define "hooks" to extend CI without hacking the core
| files.  Please see the user guide for info:
|
|    http://codeigniter.com/user_guide/general/hooks.html
|
*/
$hook['post_controller_constructor'] = array(
    'class'    => 'Acl',
    'function' => 'auth',
    'filename' => 'acl.php',
    'filepath' => 'hooks'
);

具体的参数说明可以参看文档的链接地址,这里尤其要注意post_controller_constructor这个值,可以根据情况选择不同的。

3、编写权限配置文件acl.php放在config目录下。

代码如下:


$config['AUTH'] = array(
    SUPER_ADMIN         => array(
        'admin' => array('index', 'logout'),
    ),
    ADMIN   => array(
        'admin' => array('index', 'logout'),
    ),
    GUEST => array(
        'admin' => array('index', 'logout'),
    ),
);

这里只是我根据自己的情况定义的,不是真实数据,根据自己的情况定。还有主要变量名字要交$config,这样便于加载使用。

4、编写具体的权限控制Acl类

代码如下:


class Acl {
    private $url_model;
    private $url_method;
    private $CI;
    function 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);
    }
    function auth()
    {
        $user = $this->CI->session->userdata('USER');
        if(empty($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->status];
            if(in_array($this->url_model, array_keys($controllers))){
                if(!in_array($this->url_method, $controllers[$this->url_model])){
                    show_error('您无权访问该功能,该错误已经被记录!点击返回');
                }
            }else{
                show_error('您无权访问该模块,该错误已经被记录!点击返回');
            }
        }
        else
            show_error('错误的用户类型,该错误已经被记录!点击返回');
    }
}

整体上大体是这样的形式,最后还是要根据自己的实际情况来确定。

需要注意的是:

代码如下:


$this->CI =& get_instance();

以上只是实现了简单的权限控制,小伙伴们可以根据自己的需求,自由扩展下吧。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
如何在uniapp中實現權限控制與使用者管理 如何在uniapp中實現權限控制與使用者管理 Oct 20, 2023 am 11:15 AM

如何在uniapp中實現權限控制和使用者管理隨著行動應用程式的發展,權限控制和使用者管理成為了應用程式開發的重要一環。在uniapp中,我們可以使用一些實用的方法來實現這兩個功能,提高應用程式的安全性和使用者體驗。本文將介紹如何在uniapp中實現權限控制和使用者管理,並提供一些具體程式碼範例供參考。一、權限控制權限控制是指在應用程式中對不同使用者或使用者群組設定不同的操作權限,以保護應

使用PHP和SQLite實現使用者權限和存取控制 使用PHP和SQLite實現使用者權限和存取控制 Jul 29, 2023 pm 02:33 PM

使用PHP和SQLite實現使用者權限和存取控制在現代的web應用程式中,使用者權限和存取控制是非常重要的一部分。透過正確的權限管理,可以確保只有經過授權的使用者能夠存取特定的頁面和功能。在本文中,我們將學習如何使用PHP和SQLite來實現基本的使用者權限和存取控制。首先,我們需要建立一個SQLite資料庫來儲存使用者和其權限的資訊。下面是簡單的使用者表和權限表的結構

php如何使用CI框架? php如何使用CI框架? Jun 01, 2023 am 08:48 AM

隨著網路技術的發展,PHP成為了Web開發的重要工具之一。而其中一款流行的PHP框架——CodeIgniter(以下簡稱CI)也得到了越來越多的關注與使用。今天,我們就來看看如何使用CI框架。一、安裝CI框架首先,我們需要下載CI框架並安裝。在CI的官網(https://codeigniter.com/)上下載最新版本的CI框架壓縮包。下載完成後,解壓縮

Laravel中的使用者管理與權限控制:實現多使用者和角色分配 Laravel中的使用者管理與權限控制:實現多使用者和角色分配 Aug 12, 2023 pm 02:57 PM

Laravel中的使用者管理和權限控制:實現多使用者和角色分配引言:在現代的Web應用程式中,使用者管理和權限控制是非常重要的功能之一。 Laravel作為一個流行的PHP框架,提供了強大而靈活的工具來實現多使用者和角色分配的權限控制。本文將介紹如何在Laravel中實現使用者管理和權限控制的功能,並提供相關的程式碼範例。一、安裝與設定首先,在Laravel中實現使用者管理

Laravel權限功能的最佳實務:如何正確控制使用者權限 Laravel權限功能的最佳實務:如何正確控制使用者權限 Nov 02, 2023 pm 12:32 PM

Laravel權限功能的最佳實踐:如何正確控制使用者權限,需要具體程式碼範例引言:Laravel是一款非常強大且流行的PHP框架,提供了許多功能和工具來幫助我們開發高效和安全的Web應用程式。其中一個重要的功能是權限控制,即根據使用者角色和權限來限制其存取應用程式中的不同部分。正確的權限控制是任何網路應用程式的關鍵組成部分,它可以保護敏感資料和功能不被未授權的

如何實現PHP的使用者登入與權限控制? 如何實現PHP的使用者登入與權限控制? Jun 29, 2023 pm 02:28 PM

如何實現PHP的使用者登入與權限控制?在開發網頁應用程式時,使用者登入和權限控制是非常重要的功能之一。透過使用者登錄,我們可以對使用者進行身份驗證,並且基於使用者的權限進行一系列的操作控制。本文將介紹如何使用PHP實作使用者登入和權限控制功能。一、使用者登入功能實現使用者登入功能是使用者驗證的第一步,只有透過驗證的使用者才能進一步進行操作。以下是一個基本的使用者登入實作過程:創

C#中如何使用權限控制和身份驗證 C#中如何使用權限控制和身份驗證 Oct 09, 2023 am 11:01 AM

C#中如何使用權限控制和身份驗證,需要具體程式碼範例在當今網路時代,資訊安全問題受到了越來越高的重視。為了保護系統和資料的安全,權限控制和身份驗證成為了開發者不可或缺的一部分。 C#作為一種常用的程式語言,提供了豐富的功能和類別庫來幫助我們實現權限控制和身份驗證。權限控制是指根據使用者的身分、角色和權限等,限制使用者對特定資源的存取權限。實現權限控制的常見方式是

如何在Zend框架中使用ACL(Access Control List)進行權限控制 如何在Zend框架中使用ACL(Access Control List)進行權限控制 Jul 29, 2023 am 09:24 AM

如何在Zend框架中使用ACL(AccessControlList)進行權限控制導言:在一個Web應用程式中,權限控制是至關重要的功能。它可以確保使用者只能存取其有權存取的頁面和功能,並防止未經授權的存取。 Zend框架提供了一種方便的方法來實現權限控制,即使用ACL(AccessControlList)元件。本文將介紹如何在Zend框架中使用ACL

See all articles