PHP之运用CI用钩子实现URL权限控制————————【Badboy】

<span style="background-color: rgb(247, 252, 255); font-family: Verdana, Arial, Helvetica, sans-serif; "></span><p><span style="font-family: Verdana, Arial, Helvetica,
sans-serif;

font-size: 14px;

background-color: rgb(247, 252, 255);

">CI 的钩子功能使得您可以在不修改系统核心文件的基础上来改变或增加系统的核心运行功能。</span></p><p><span style="font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 14px; background-color: rgb(247, 252, 255); ">

例如,您可以在控制器刚刚载入前或刚刚载入后来运行特定的脚本,或者在其他时刻来触发您的脚本

</span></p><p><span style="font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 14px;

background-color: rgb(247, 252, 255);

">看代码:</span></p><pre name="code" class="php"><span style="background-color: rgb(247, 252, 255); font-family: Verdana, Arial, Helvetica, sans-serif; ">

</span>

system/application/config/hooks.php中添加钩子声明:

[php]

$hook[‘post_controller_constructor‘] = array(

‘class‘ => ‘Acl‘,

‘function‘ => ‘filter‘,

‘filename‘ => ‘acl.php‘,

‘filepath‘ => ‘hooks‘,

);

system/application/config/config.php中让钩子系统生效

$config[‘enable_hooks‘] = TRUE;

然后在中新建acl.php权限系统配置文件,当然你也可以放在数据库中。

//游客权限映射

$config[‘acl‘][‘visitor‘] = array(

‘‘ => array(‘index‘),//首页 www.2cto.com

‘music‘ => array(‘index‘, ‘list‘),

‘user‘ => array(‘index‘, ‘login‘, ‘register‘)

);

//管理员

$config[‘acl‘][‘admin‘] = array(

);

//-------------配置权限不够的提示信息及跳转url------------------//

$config[‘acl_info‘][‘visitor‘] = array(

‘info‘ => ‘需要登录以继续‘,

‘return_url‘ => ‘user/login‘

);

$config[‘acl_info‘][‘more_role‘] = array(

‘info‘ => ‘需要更高权限以继续‘,

‘return_url‘ => ‘user/up‘

);

/* End of file acl.php */

/* Location: ./application/config/acl.php */

system/application/hooks目录下添加acl.php逻辑处理文件

class Acl

{

private $url_model;//所访问的模块,如:music

private $url_method;//所访问的方法,如:create

private $url_param;//url所带参数 可能是 1 也可能是 id=1&name=test

private $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 (emptyempty($user)) {//游客visitor

$role_name = ‘visitor‘;

} else {

$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‘]);

}

}

PHP之运用CI用钩子实现URL权限控制————————【Badboy】

时间: 2024-08-11 09:57:11

PHP之运用CI用钩子实现URL权限控制————————【Badboy】的相关文章

Spring Security 动态url权限控制(三)

一.前言 本篇文章将讲述Spring Security 动态分配url权限,未登录权限控制,登录过后根据登录用户角色授予访问url权限 基本环境 spring-boot 2.1.8 mybatis-plus 2.2.0 mysql 数据库 maven项目 Spring Security入门学习可参考之前文章: SpringBoot集成Spring Security入门体验(一)https://blog.csdn.net/qq_38225558/article/details/101754743

Shiro学习(19)动态URL权限限制

用过Spring Security的朋友应该比较熟悉对URL进行全局的权限控制,即访问URL时进行权限匹配:如果没有权限直接跳到相应的错误页面.Shiro也支持类似的机制,不过需要稍微改造下来满足实际需求.不过在Shiro中,更多的是通过AOP进行分散的权限控制,即方法级别的:而通过URL进行权限控制是一种集中的权限控制.本章将介绍如何在Shiro中完成动态URL权限控制. 本章代码基于<第十六章 综合实例>,请先了解相关数据模型及基本流程后再学习本章. 表及数据SQL 请运行shiro-ex

CI框架 .htaccess 隐藏url中index.php的解决

CodeIgniter(以下简称"CI")是一款国外优秀的PHP轻量级MVC框架,它支持PHP4和PHP5,是开发中小型可拓展性需求高的Web应用程序的利器.目前你所见到的这个博客程序,正是采用CI进行的编写. 秉承MVC架构的思想,CI中的所有控制器都需要经过单点入口文件index.php(默认)来加载调用.也就是说,在默认情况下,所有CI开发项目的URL都形如以下这种形式: http://localhost/index.php/blog/logs/this_is_a_test_en

CI框架 .htaccess 隐藏url在index.php解决方案

CodeIgniter(下面简称"CI")是一款国外优秀的PHP轻量级MVC框架,它支持PHP4和PHP5.是开发中小型可拓展性需求高的Web应用程序的利器.眼下你所见到的这个博客程序,正是採用CI进行的编写. 秉承MVC架构的思想,CI中的全部控制器都须要经过单点入口文件index.php(默认)来载入调用. 也就是说.在默认情况下,全部CI开发项目的URL都形例如以下面这样的形式: http://localhost/index.php/blog/logs/this_is_a_tes

权限控制方案之——基于URL拦截

概述: 在系统开发过程中需要考虑的一个重要的问题就是权限问题,权限问题也是安全问题的一个范畴,我们要求在用户登录系统之后,要控制用户可以访问的系统资源,使得用户只可以访问到系统事先分配好的资源:这里的资源可以是一个URL地址,也可以是页面上的菜单和按钮等.对于实现权限的控制有多种方案,这里说明一下通过URL拦截的方式进行权限控制的实现方案. 基本流程: 对于权限的控制可以分为两个步骤:认证和授权. 认证:即用户登录系统的时候对用户的身份信息进行判别. 授权:即在用户登录成功后为用户分配用户可以访

shiro教程(1)-基于url权限管理

shiro教程系列 shiro教程(2) shiro教程(3) shiro教程(4) 一. 权限管理 1.1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源. 权限管理包括用户身份认证和授权两部分,简称认证授权.对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问. 1.2 用户身份认证 1.2.1 概念 身份认证,就是

在ASP.NET MVC中实现基于URL的权限控制

本示例演示了在ASP.NET MVC中进行基于URL的权限控制,由于是基于URL进行控制的,所以只能精确到页.这种权限控制的优点是可以在已有的项目上改动极少的代码来增加权限控制功能,和项目本身的耦合度低,并且实现起来也比较简单.缺点是权限控制不够精确,不能具体到某一具体的按钮或者某一功能. 在数据库中新建2个表.PermissionItem表用于保存权限ID和页面路径的关系,一个权限ID可以有多个页面,一般同一个权限ID下的页面是为了实现同一个功能.PermissionList表用于保存用户所具

项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示

1 课程计划 1. 常见权限控制方式 2. 基于shiro提供url拦截方式验证权限 3. 在realm中授权 4. 基于shiro提供注解方式验证权限 5. 总结验证权限方式(四种) 6. 用户注销 7. 基于treegrid实现菜单展示 2 常见的权限控制方式 2.1 url拦截实现权限控制 shiro基于过滤器实现的   2.2 注解方式实现权限控制 底层:代理技术     3 基于shiro的url拦截方式验权   <!-- 配置过滤器工厂 --> <bean id="

**[权限控制] 利用CI钩子实现权限认证

http://codeigniter.org.cn/forums/thread-10877-1-1.html 一直没找到CI的权限认证扩展,以前好像找到过一个老外的扩展,不过不怎么好用,现在记不清了,后来仿着jsp firter的方式用CI钩子写了一下,感觉还可以,做个小网站,小应用足够了,没必要搞得太复杂.看到很多人在网上问,这里把我们的方法分享一下,如果你有更好的实现,也请记得分享给我们.^_^ 通常我们后台路径看起来都会像下面这样: http://www.php-chongqing.com