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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
PHP中文URL编解码(urlencode()rawurlencode()
Jul 03 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
Laravel中注册Facades的步骤详解
Mar 16 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
php gd等比例缩放压缩图片函数
Jun 12 PHP
PHP中多线程的两个实现方法
Oct 14 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 PHP
php 函数中静态变量使用的问题实例分析
Mar 05 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 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/17 数码科技
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
js 单引号 传递方法
2009/06/22 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
小程序自定义日历效果
2018/12/29 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
小学数学教学反思
2014/02/02 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
社区娱乐活动方案
2014/08/21 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL