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

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

基于Java和FFmpeg实现视频压缩和剪辑功能

《基于Java和FFmpeg实现视频压缩和剪辑功能》在视频处理开发中,压缩和剪辑是常见的需求,本文将介绍如何使用Java结合FFmpeg实现视频压缩和剪辑功能,同时去除数据库操作,仅专注于视频处理,需... 目录引言1. 环境准备1.1 项目依赖1.2 安装 FFmpeg2. 视频压缩功能实现2.1 主要功

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Java实现TXT文件导入功能的详细步骤

《Java实现TXT文件导入功能的详细步骤》在实际开发中,很多应用场景需要将用户上传的TXT文件进行解析,并将文件中的数据导入到数据库或其他存储系统中,本文将演示如何用Java实现一个基本的TXT文件... 目录前言1. 项目需求分析2. 示例文件格式3. 实现步骤3.1. 准备数据库(假设使用 mysql

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook