search
HomeBackend DevelopmentPHP TutorialCI框架中通过hook的方式实现简单的权限控制_PHP

根据自己的实际情况,需要两个文件,一个是权限控制类,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();

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

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
使用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中实现用户管理

如何实现PHP的用户登录和权限控制?如何实现PHP的用户登录和权限控制?Jun 29, 2023 pm 02:28 PM

如何实现PHP的用户登录和权限控制?在开发Web应用程序时,用户登录和权限控制是非常重要的功能之一。通过用户登录,我们可以对用户进行身份验证,并且基于用户的权限进行一系列的操作控制。本文将介绍如何使用PHP实现用户登录和权限控制功能。一、用户登录功能实现用户登录功能是用户验证的第一步,只有通过验证的用户才能进一步进行操作。下面是一个基本的用户登录实现过程:创

PHP中如何使用CI框架PHP中如何使用CI框架Jun 27, 2023 pm 04:51 PM

PHP是一种流行的编程语言,广泛应用于Web开发。CI(CodeIgniter)框架是PHP中最受欢迎的框架之一,它提供了一整套现成的工具和函数库,以及一些流行的设计模式,让开发人员能够更加高效地开发Web应用程序。本文将介绍使用CI框架开发PHP应用程序的基本步骤和方法。了解CI框架的基本概念和结构在使用CI框架之前,我们需要先了解一些基本的概念和结构。下

如何在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

php如何使用CI4框架?php如何使用CI4框架?Jun 01, 2023 pm 02:40 PM

PHP是一种广泛使用的服务器端脚本语言,而CodeIgniter4(CI4)是一个流行的PHP框架,它提供了一种快速而优秀的方法来构建Web应用程序。在这篇文章中,我们将通过引导您了解如何使用CI4框架,来使您开始使用此框架来开发出众的Web应用程序。1.下载并安装CI4首先,您需要从官方网站(https://codeigniter.com/downloa

Django框架中的权限控制技巧(第二部分)Django框架中的权限控制技巧(第二部分)Jun 17, 2023 pm 07:08 PM

Django框架中的权限控制技巧(第二部分)在Django框架中,权限控制是非常重要的一环。在上一篇文章中,我们已经介绍了Django框架中的一些基础权限控制技巧,包括使用内置的权限认证系统和基于装饰器的权限控制。本篇文章将继续探讨Django框架中的其他权限控制技巧。自定义认证后端在Django框架中,我们可以使用自定义认证后端来实现定制化的认证逻辑。通过

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use