CI框架钩子功能——權限控制

2024-06-16 15:32

本文主要是介绍CI框架钩子功能——權限控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.相關資料http://codeigniter.org.cn/user_guide/general/hooks.html

2.打开權限控制功能在 application/config/config.php 文件中设定: 

$config['enable_hooks'] = TRUE;

3.在項目目錄下的application/config/hoos.php文件定義相關的鈎子,例:

$hook['post_controller_constructor'] = array('class' => 'Acl','function' => 'filter','filename' => 'acl.php','filepath' => 'hooks',
);
4.在項目目錄下的 application/hooks和application/config下添加acl.php文件



以下為application/hooks/acl.php的相關代碼

<?php
class Acl
{private $url_model;//所访问的模块,如:musicprivate $url_method;//所访问的方法,如:createprivate $url_param;//url所带参数 可能是 1 也可能是 id=1&name=testprivate $CI;function Acl(){$this->CI = & get_instance();$this->CI->load->library('session');$url = $_SERVER['PHP_SELF'];$arr = explode('/', $url);$arr = array_slice($arr, array_search('index.php', $arr) + 1, count($arr));$this->url_model = isset($arr[0]) ? $arr[0] : '';$this->url_method = isset($arr[1]) ? $arr[1] : 'index';$this->url_param = isset($arr[2]) ? $arr[2] : '';}/*** 權限過濾*/function filter(){$user = $this->CI->session->userdata('user');if (empty($user)){//游客guest$role_name = 'guest';} else {//admin  teacher  student$role_name = $user->role;}$this->CI->load->config('acl');$acl = $this->CI->config->item('acl');$role = $acl[$role_name];$acl_info = $this->CI->config->item('acl_info');if (array_key_exists($this->url_model, $role) && in_array($this->url_method, $role[$this->url_model])){;} else {//无权限,给出提示,跳转url$this->CI->session->set_flashdata('info', $acl_info[$role_name]['info']);redirect($acl_info[$role_name]['return_url']);}}}?>
以下為application/config/acl.php的相關代碼

<?php
//權限映射  start
//遊客
$config['acl']['guest'] = array('' => array('index'),'users' => array('login')
);
//管理員
$config['acl']['admin'] = array();
//權限映射 end//配置權限不夠的提示信息以及跳轉url start
$config['acl_info']['guest'] = array('info' => '需要登錄以繼續','return_url' => 'users/login'
);$config['acl_info']['more_role'] = array('info' => '需要更高權限以繼續','return_url' => 'users/up'
);
// 配置權限不夠的提示信息以及跳轉url end?>

之後若需要給用戶添加頁眉權限時,在 application/config/acl.php修改即可


这篇关于CI框架钩子功能——權限控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066830

相关文章

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

基于SpringBoot实现文件秒传功能

《基于SpringBoot实现文件秒传功能》在开发Web应用时,文件上传是一个常见需求,然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余,此时可以使用文件秒传技术通过识别重复... 目录前言文件秒传原理代码实现1. 创建项目基础结构2. 创建上传存储代码3. 创建Result类4.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应