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 09 PHP
PHP 压缩文件夹的类代码
Nov 05 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
php自动给文章加关键词链接的函数代码
Nov 29 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
Dec 28 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
如何重写Laravel异常处理类详解
Dec 20 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
php连接mysql数据库代码
2009/03/10 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
jquery获取节点名称
2015/04/26 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
Python中atexit模块的基本使用示例
2015/07/08 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Python中logging实例讲解
2019/01/17 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
python基于socket函数实现端口扫描
2020/05/28 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
电子信息毕业生自荐信
2013/11/16 职场文书
大学生职业生涯设计书
2014/01/02 职场文书
初中美术教学反思
2014/01/29 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
门前三包责任书
2014/04/15 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python