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 相关文章推荐
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
详解Laravel框架的依赖注入功能
May 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+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
同学会邀请书大全
2014/01/12 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
小学课外活动总结
2014/07/09 职场文书
2014年质检员工作总结
2014/11/18 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android