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 读取shell管道传输过来的内容
Mar 01 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
Jun 19 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
php查询内存信息操作示例
May 09 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 PHP
thinkphp3.2框架中where条件查询用法总结
Aug 13 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
第三节 定义一个类 [3]
2006/10/09 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
python实现爬虫下载美女图片
2015/07/14 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Django中提示消息messages的设置方式
2019/11/15 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
Python tcp传输代码实例解析
2020/03/18 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
教师评优的个人自我评价分享
2013/09/19 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
垂直极限观后感
2015/06/08 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏