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 相关文章推荐
一个程序下载的管理程序(二)
Oct 09 PHP
如何在PHP中使用Oracle数据库(4)
Oct 09 PHP
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
PHP实现合并discuz用户
Aug 05 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
python使用scrapy解析js示例
2014/01/23 Python
python装饰器decorator介绍
2014/11/21 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
python如何调用java类
2020/07/05 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
python3中确保枚举值代码分析
2020/12/02 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
班级聚会策划书
2014/01/16 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
律师授权委托书范本
2014/10/07 职场文书
2015大学迎新标语
2015/07/16 职场文书
如何写好竞聘报告
2019/04/03 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
Python装饰器的练习题
2021/11/23 Python
python3 字符串str和bytes相互转换
2022/03/23 Python