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中GET变量的使用
Oct 09 PHP
php牛逼的面试题分享
Jan 18 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
基于PHP array数组的教程详解
Jun 05 PHP
php检测useragent版本示例
Mar 24 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
Mar 28 PHP
phpcms配置列表页以及获得文章发布时间
Jul 04 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
PHP实现的简单缓存类
2015/07/29 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
php上传excel表格并获取数据
2017/04/27 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
python脚本爬取字体文件的实现方法
2017/04/29 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
药品促销活动方案
2014/02/14 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
国庆宣传标语
2014/06/30 职场文书
2014年导购员工作总结
2014/11/18 职场文书
超级礼物观后感
2015/06/15 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书