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
一个MYSQL操作类
Nov 16 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
Apr 01 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
PHP date函数常用时间处理方法
May 11 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
PHP中include和require的区别实例分析
May 07 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
模仿OSO的论坛(五)
2006/10/09 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
Python中字符串的格式化方法小结
2016/05/03 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
大学生自我鉴定评语
2014/01/27 职场文书
销售助理岗位职责
2014/02/21 职场文书
庆元旦演讲稿
2014/09/15 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
我的生日感言
2015/08/03 职场文书