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 相关文章推荐
php表单转换textarea换行符的方法
Sep 10 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
openPNE常用方法分享
Nov 29 PHP
解决File size limit exceeded 错误的方法
Jun 14 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
php使用websocket示例详解
Mar 12 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 PHP
php实例化一个类的具体方法
Sep 19 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 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
处理php自动反斜杠的函数代码
2010/01/05 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
Python中url标签使用知识点总结
2020/01/16 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
Python将字典转换为XML的方法
2020/08/01 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
Delphi软件工程师试题
2013/01/29 面试题
平面设计求职信
2014/03/10 职场文书
自动一体化专业求职信
2014/03/15 职场文书
专业技术职务聘任书
2014/03/29 职场文书
摄影展策划方案
2014/06/02 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
亲属关系公证书样本
2015/01/23 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL