`
tyllxx
  • 浏览: 86262 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

ThinkPHP3 中APP_GROUP_LIST分组后RBAC无权限问题解决办法!!!

阅读更多

转载请注明出处:http://tyllxx.iteye.com/blog/1693553

今天在官网下的rbac示例,解压出来放到网站根目录,配合TP3.1的框架,运行正常,进入也正常。权限也正常,数据库无问题。
将配置文件改名为config.inc.php,放在App目录下,配置文件中加入
        'APP_GROUP_LIST'=>'admin,member',
        'DEFAULT_GROUP'=>'',

采用分组后Conf文件夹下新建admin,member文件夹,目录中包含config.php,Conf文件夹下也含config.php(不是原先的),内容如下:
$config=require './App/config.inc.php';
$array=array();
return array_merge($config,$array);
转载请注明出处:http://tyllxx.iteye.com/blog/1693553 
CommonAction文件中:
if (!RBAC::AccessDecision(GROUP_NAME)) {//增加GROUP_NAME参数

\Lib\Action文件夹下新建admin,member文件夹,复制\Lib\Action文件夹下IndexAction.class.php文件到新建的admin,member两个文件夹中。
\Tpl文件夹下新建admin,member文件夹,复制\Tpl文件夹下Index文件夹到新建的admin,member两个文件夹中。

配置数据库中权限(为了方便测试删除了数据表中原有的权限):

 

以下node表:



 
以下 access表:


 

 

以下role表:


以下role_user表:


按照以上方式配置登录成功,但是提示无权限!

 

 

目前找到的解决办法是:

修改RBAC主文件:\Lib\ORG\Util\RBAC.class.php

其中通过数据库读取level=1的数据时无法找到匹配值而造成无权限问题。

问题语句:

 

 

        $db     =   Db::getInstance(C('RBAC_DB_DSN'));
        $table = array('role'=>C('RBAC_ROLE_TABLE'),'user'=>C('RBAC_USER_TABLE'),'access'=>C('RBAC_ACCESS_TABLE'),'node'=>C('RBAC_NODE_TABLE'));
        $sql    =   "select node.id,node.name from ".
                    $table['role']." as role,".
                    $table['user']." as user,".
                    $table['access']." as access ,".
                    $table['node']." as node ".
                    "where user.user_id='{$authId}' and user.role_id=role.id and ( access.role_id=role.id  or (access.role_id=role.pid and role.pid!=0 ) ) and role.status=1 and access.node_id=node.id and node.level=1 and node.status=1";
        $apps =   $db->query($sql);
转载请注明出处:http://tyllxx.iteye.com/blog/1693553

 

其中的:

"where user.user_id='{$authId}' and user.role_id=role.id and ( access.role_id=role.id  or (access.role_id=role.pid and role.pid!=0 ) ) and role.status=1 and access.node_id=node.id and node.level=1 and node.status=1";

 

改为:

 

"where user.user_id='{$authId}' and user.role_id=role.id  and role.status=1 and access.node_id=node.id and node.level=1 and node.status=1";

 

就可以正确识别分组后的权限。。。。

 

配置文件中

'RBAC_GROUP_NAME'=>'admin,member',

这句话不知道是否有用,未测试。

 

补全下:

还有两个地方要注意,一个就是数据库node表里要把level=1的需要添加相应名称的分组名例如Admin,另外就是
CommonAction中,需要添加GROUP_NAME,今天测试独立分组的RBAC,已经成功啦,哇咔咔。。。。。

 

class CommonAction extends Action {

    function _initialize() {
        import('@.ORG.Util.Cookie');
        // 用户权限检查
        if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
            import('@.ORG.Util.RBAC');
            if (!RBAC::AccessDecision(GROUP_NAME)) {
 
  • 大小: 12.1 KB
  • 大小: 3.8 KB
  • 大小: 6.4 KB
  • 大小: 1.5 KB
分享到:
评论
2 楼 tyllxx 2013-08-25  
kanzhi 写道
最近正在研究,发现分组权限的问题,正在不知如何解决之际,看到老兄所写文章,此文清新顺畅,有字有图,非常人可比,只看文章一二节,便茅塞顿开。佩服佩服,上好文章确没有人写评论,实在看不下去,特注册账号,等待两天后,写此评论,望兄再接再厉。


目前TP已经3.1.3了,新的独立分组没有问题,使用原始的RBAC也没有再遇到无权限的问题。还是尽量用原版吧,这样的修改原始的RBAC类,也许会引起其他问题。
实在是之前使用3.1没有解决办法的无奈之举。
1 楼 kanzhi 2013-06-06  
最近正在研究,发现分组权限的问题,正在不知如何解决之际,看到老兄所写文章,此文清新顺畅,有字有图,非常人可比,只看文章一二节,便茅塞顿开。佩服佩服,上好文章确没有人写评论,实在看不下去,特注册账号,等待两天后,写此评论,望兄再接再厉。

相关推荐

    PHP_THINKPHP_study14_RBAC

    3. **控制器(Controller)**:在控制器中,对用户的请求进行权限检查,确保只有拥有相应权限的角色或用户才能执行特定的操作。 4. **视图(View)**:展示权限管理的界面,如角色管理、权限分配、用户管理等页面,...

    thinkphp中__PUBLIC__常量的用法.zip

    在ThinkPHP框架中,`__PUBLIC__`是一个预定义常量,用于帮助开发者方便地引用项目的公共资源,如CSS、JavaScript文件或图片等。...在实际项目中,合理地利用这些知识,可以有效地解决资源路径问题,使项目更加健壮。

    ThinkPHP(RBAC)权限管理系统_第9讲_添加权限

    在本节教程“ThinkPHP(RBAC)权限管理系统_第9讲_添加权限”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理功能。RBAC是一种常用的身份验证...

    ThinkPHP(RBAC)权限管理系统_第11讲_权限管理

    3. **RBAC在ThinkPHP中的实现**:在ThinkPHP中实现RBAC,首先需要设计数据表结构,包括用户表、角色表和权限表,以及角色-权限关联表。用户表存储用户信息,角色表存储角色信息,权限表存储系统中可操作的各种权限,...

    ThinkPHP(RBAC)权限管理系统_第5讲_添加角色

    在本节教程“ThinkPHP(RBAC)权限管理系统_第5讲_添加角色”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现RBAC(Role-Based Access Control,基于角色的访问控制)机制,以及如何添加新的角色。RBAC是一种...

    ThinkPHP(RBAC)权限管理系统_第6讲_添加角色

    在本节教程“ThinkPHP(RBAC)权限管理系统_第6讲_添加角色”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现角色(Role-Based Access Control,RBAC)的管理,尤其是如何添加新的角色。RBAC是一种广泛使用的...

    ThinkPHP5_RBAC

    在这个ThinkPHP5的RBAC案例中,我们将深入探讨如何利用该框架实现有效的权限控制。 ### 1. ThinkPHP5框架基础 ThinkPHP5采用了MVC(Model-View-Controller)设计模式,将业务逻辑、数据处理和界面展示分离,提高了...

    ThinkPHP(RBAC)权限管理系统_第25讲_RBAC认证配置信息

    在本节课程“ThinkPHP(RBAC)权限管理系统_第25讲_RBAC认证配置信息”中,我们将深入探讨如何在ThinkPHP框架下构建一个基于RBAC(Role-Based Access Control,角色基础的访问控制)的权限管理系统。RBAC是一种常用的...

    ThinkPHP(RBAC)权限管理系统_第21讲_角色管理之配置权限

    在本节课程“ThinkPHP(RBAC)权限管理系统_第21讲_角色管理之配置权限”中,我们将深入探讨如何在基于ThinkPHP框架的RBAC(Role-Based Access Control,基于角色的访问控制)系统中实现角色管理和权限配置。RBAC是一...

    ThinkPHP5.0.5完整版_ThinkPHP_full_v5.0.5

    《深入理解ThinkPHP5.0.5:框架详解与实战应用》 ThinkPHP5.0.5是一款基于PHP7设计的轻量级、高性能的国产Web开发框架,它以其简洁的代码、高效的性能以及强大的功能在PHP开发领域备受青睐。本篇文章将详细解析...

    thinkphp5.0 权限认证管理模块 插件 RBAC AUTH权限认证管理-tp5auth.zip

    在本案例中,"thinkphp5.0 权限认证管理模块 插件 RBAC AUTH权限认证管理-tp5auth.zip" 提供了一个RBAC(Role-Based Access Control,基于角色的访问控制)权限认证管理插件,用于帮助开发者实现细粒度的权限分配。...

    ThinkPHP(RBAC)权限管理系统_第30讲_角色导航菜单加载

    在本节课程“ThinkPHP(RBAC)权限管理系统_第30讲_角色导航菜单加载”中,我们将深入探讨如何在ThinkPHP框架下构建一个基于RBAC(Role-Based Access Control,角色基础访问控制)的权限管理系统,并重点讲解如何实现...

    ThinkPHP(RBAC)权限管理系统_第8讲_添加权限

    在本节课程“ThinkPHP(RBAC)权限管理系统_第8讲_添加权限”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现RBAC(Role-Based Access Control,基于角色的访问控制)机制,以及如何添加新的权限。RBAC是一种...

    thinkphp问卷_问卷mvc_thinkphp_thinkphp问卷_问卷_thinkphp系统_源码.zip

    3. 响应收集:用户提交问卷后,数据应被存储在数据库中,形成问卷响应记录。这部分涉及控制器处理POST请求,以及模型的数据存储。 4. 数据分析:源码可能还包含了数据分析功能,如统计答题人数、选项选择比例等,这...

    thinkphp_thinkphp_thinkphp5_

    本压缩包“thinkphp_thinkphp_thinkphp5_”包含了一个基于ThinkPHP5的模板开发实例,旨在帮助开发者快速理解和运用ThinkPHP5框架进行项目开发。 首先,我们要理解ThinkPHP5的核心设计理念——“简洁、快速、优雅”...

    PHP_THINKPHP_study13_独立分组配置项和目录的详解

    3. `runtime` - 运行时目录,存放系统运行过程中产生的临时文件,如日志、编译后的视图文件等。 4. `extend` - 扩展目录,可以存放自定义的类库和扩展。 5. `vendor` - 第三方库目录,存放Composer管理的依赖包。 ...

    ThinkPHP(RBAC)权限管理系统_第17讲_用户管理

    在本节课程“ThinkPHP(RBAC)权限管理系统_第17讲_用户管理”中,我们将深入探讨如何在基于ThinkPHP框架构建的系统中实现RBAC(Role-Based Access Control,角色基础的访问控制)机制下的用户管理。RBAC是一种广泛...

    ThinkPHP1.6.0RC1_Core

    ThinkPHP1.6.0RC1_Core提供了RBAC(Role-Based Access Control)角色权限控制,使得权限管理变得简单,适用于多用户、多角色的复杂应用场景。 9. 插件和钩子系统: 框架支持插件和钩子机制,允许开发者通过插入...

    ThinkPHP(RBAC)权限管理系统_第1讲_权限分析

    总结,"ThinkPHP(RBAC)权限管理系统_第1讲_权限分析"主要讲解了RBAC模型的基本概念及其在ThinkPHP框架下的实现方法,帮助开发者理解和掌握如何在实际项目中构建高效且安全的权限管理体系。通过学习这个教程,你可以...

Global site tag (gtag.js) - Google Analytics