找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 367|回复: 0
打印 上一主题 下一主题

ThinkPHP中RBAC类的四种用法分析

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 05:52:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了ThinkPHP中RBAC类的四种用法。分享给大家供大家参考。具体方法如下:
第一类:放在登陆控制器的登陆操作中
1.RBAC::authenticate();
用于在用户表中查找表单提交的用户名的数据,实质上就是一条用户表查寻语句:
[U]复制代码[/U] 代码如下:return M(modle)->where(array)->find();这个操作有两个参数
a.array()数组的写法及作用和表查寻数组一样:
[U]复制代码[/U] 代码如下:array('字段'=>'值','字段'=>array('条件','值'));
b.model就是表名,默认是配制参数[U]复制代码[/U] 代码如下:C('USER_AUTH_MODEL');返回值是一条查询结果以一维数组承显。
注:它就是一个针对用户表的单条记录查寻方法,我们可以不用它,直接用查寻语句。
2.RBAC::saveAccessList();
将用户可以操控的应用名(组名),控制器名,操作名以一个三维数组的形势写入session。
参数是用户id,一般我们在用户登陆验证通过后,会将用户id写入session中的[U]复制代码[/U] 代码如下:C('USER_AUTH_KEY');
本方法中默认会拿$_SESSION(C('USER_AUTH_KEY'))这个参数;
第二类:放在公共控制器中(所有参加权限验证的控制器类全都要继于成这个类)
3.RBAC::AccessDecision();
用来判断当前用户对当前操控是否有权限,参数默认是应用名APP_NAME,如果是分组的模式,就得传入分组名GROUP_NAME
这里面调用了一个方法[U]复制代码[/U] 代码如下: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框架程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • 使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
  • ThinkPHP分页类使用详解
  • ThinkPHP使用心得分享-上传类UploadFile的使用
  • ThinkPHP调用百度翻译类实现在线翻译
  • 仿dedecms下拉分页样式修改的thinkphp分页类实例
  • thinkphp3.2.2前后台公用类架构问题分析
  • thinkphp文件处理类Dir.class.php的用法分析
  • Thinkphp调用Image类生成缩略图的方法
  • ThinkPHP文件缓存类代码分享
  • ThinkPHP进程计数类Process用法实例详解
  • thinkPHP自定义类实现方法详解
  • thinkPHP引入类的方法详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端