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 iconv函数的使用详解
Jun 09 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
php中static和const关键字用法分析
Dec 07 PHP
php图像验证码生成代码
Jun 08 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 PHP
php模拟实现斗地主发牌
Apr 22 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
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
ajax与302响应代码测试
2013/10/23 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
tensorflow获取变量维度信息
2018/03/10 Python
Python 修改列表中的元素方法
2018/06/26 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Python 使用多属性来进行排序
2019/09/01 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
python 如何引入协程和原理分析
2020/11/30 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
历史学专业个人的自我评价
2013/10/13 职场文书
会计自荐书
2013/12/02 职场文书
车间班组长的职责
2013/12/13 职场文书
消防先进事迹材料
2014/02/10 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
保密普查工作实施方案
2014/02/25 职场文书
大队委员竞选稿
2015/11/20 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
PHP获取学生成绩的方法
2021/11/17 PHP