ThinkPHP中RBAC类的四种用法分析


Posted in PHP onNovember 24, 2014

本文实例讲述了ThinkPHP中RBAC类的四种用法。分享给大家供大家参考。具体方法如下:

第一类:放在登陆控制器的登陆操作中

1.RBAC::authenticate();

用于在用户表中查找表单提交的用户名的数据,实质上就是一条用户表查寻语句:

return M(modle)->where(array)->find();
这个操作有两个参数

a.array()数组的写法及作用和表查寻数组一样:

array('字段'=>'值','字段'=>array('条件','值'));

b.model就是表名,默认是配制参数

C('USER_AUTH_MODEL');
返回值是一条查询结果以一维数组承显。
注:它就是一个针对用户表的单条记录查寻方法,我们可以不用它,直接用查寻语句。

2.RBAC::saveAccessList();

将用户可以操控的应用名(组名),控制器名,操作名以一个三维数组的形势写入session。

参数是用户id,一般我们在用户登陆验证通过后,会将用户id写入session中的

C('USER_AUTH_KEY');

本方法中默认会拿$_SESSION(C('USER_AUTH_KEY'))这个参数;

第二类:放在公共控制器中(所有参加权限验证的控制器类全都要继于成这个类)

3.RBAC::AccessDecision();

用来判断当前用户对当前操控是否有权限,参数默认是应用名APP_NAME,如果是分组的模式,就得传入分组名GROUP_NAME

这里面调用了一个方法

RBAC::checkAccess();
用于验证当前控制器或操作是否参加本次判断.

注:有四个配制参数,需要我们写两个。

需要验证控制器:REQUIRE_AUTH_MODULE 需要验证操作:REQUIRE_AUTH_ACTION

不需要验证控制器:NOT_AUTH_MODULE 不需要验证操作:NOT_AUTH_ACTION

如果全写需要:在REQUIRE_AUTH_ACTION中写操作的同时必须在REQUIRE_AUTH_MODULE写其所属控制器。

如果全写不需要:在NOT_AUTH_MODULE中写了控制器,其控制器中的所有方法都将不需要验证。

如果独写NOT_AUTH_ACTION中的操作,则需要注意操作名重名的问题。

4.RBAC::checkLogin();

用来判断用户是否登陆。
注:登陆后的首页显示这个操作必须参加验证,所以每个角色都得加入这个操作的权限。

也可以不用这个方法,直接判断$_SESSION[C('USER_AUTH_KEY')]是否存在,不存在就跳转到登陆界面这样就可以让登陆后首页显示这个操作不参加验证。

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
php的一个登录的类 [推荐]
Mar 16 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
PHP5函数小全(分享)
Jun 06 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
深入解析PHP底层机制及相关原理
Dec 11 PHP
thinkphp使用phpmailer发送邮件的方法
Nov 24 #PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 #PHP
php常用字符串比较函数实例汇总
Nov 24 #PHP
PHP集成百度Ueditor 1.4.3
Nov 23 #PHP
php jsonp单引号转义
Nov 23 #PHP
php常用文件操作函数汇总
Nov 22 #PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 #PHP
You might like
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
php计算函数执行时间的方法
2015/03/20 PHP
ThinkPHP路由详解
2015/07/27 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
JavaScript函数详解
2014/11/17 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Flask数据库迁移简单介绍
2017/10/24 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
2014小学植树节活动总结
2014/03/10 职场文书
社会实践活动总结范文
2014/07/03 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
设置IIS Express并发数
2022/07/07 Servers