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 文件上传系统手记
Oct 26 PHP
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
php二维数组排序详解
Nov 06 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
PHP导入导出Excel代码
Jul 07 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
PHP $_FILES函数详解
2011/03/09 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
一文带你了解Python中的字符串是什么
2018/11/20 Python
Python实现Event回调机制的方法
2019/02/13 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
基于python监控程序是否关闭
2020/01/14 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
教学大赛获奖感言
2014/01/15 职场文书
培训讲师岗位职责
2014/04/13 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
师德师风个人整改措施
2014/10/27 职场文书
婚礼新人答谢词
2015/01/04 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python