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获取类中常量,属性,及方法列表的方法
Apr 09 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
php实现源代码加密的方法
Jul 11 PHP
纯php生成随机密码
Oct 30 PHP
PHP的PDO操作简单示例
Mar 30 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
浅析php如何实现爬取数据原理
Sep 27 PHP
PHP 计算两个时间段之间交集的天数示例
Oct 24 PHP
PHP7 弃用功能
Mar 09 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 表单验证实现代码
2009/03/10 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
React中的refs的使用教程
2018/02/13 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
低版本中Python除法运算小技巧
2015/04/05 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
python正则表达式面试题解答
2020/04/28 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Python中的引用知识点总结
2019/05/20 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
pymysql 开启调试模式的实现
2019/09/24 Python
Python实现自动访问网页的例子
2020/02/21 Python
python利用opencv保存、播放视频
2020/11/02 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
社区党员先进事迹
2014/01/22 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
爱护环境建议书
2015/09/14 职场文书
大学班长竞选稿
2015/11/20 职场文书