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 相关文章推荐
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
PHP如何透过ODBC来存取数据库
Oct 09 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
处理单名多值表单的详解
Jun 08 PHP
php中通过数组进行高效随机抽取指定条记录的算法
Sep 09 PHP
php 判断字符串中是否包含html标签
Feb 17 PHP
php调用mysql存储过程实例分析
Dec 29 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
php构造函数与析构函数
Apr 23 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 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
实用函数10
2007/11/08 PHP
一篇有意思的技术文章php介绍篇
2010/10/26 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
2016/10/28 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
Django实现随机图形验证码的示例
2020/10/15 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
酒店公关部经理岗位职责
2013/11/24 职场文书
少先队入队活动方案
2014/02/08 职场文书
董事长岗位职责
2015/02/13 职场文书