转载请注明出处: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)) {
相关推荐
3. **控制器(Controller)**:在控制器中,对用户的请求进行权限检查,确保只有拥有相应权限的角色或用户才能执行特定的操作。 4. **视图(View)**:展示权限管理的界面,如角色管理、权限分配、用户管理等页面,...
在ThinkPHP框架中,`__PUBLIC__`是一个预定义常量,用于帮助开发者方便地引用项目的公共资源,如CSS、JavaScript文件或图片等。...在实际项目中,合理地利用这些知识,可以有效地解决资源路径问题,使项目更加健壮。
在本节教程“ThinkPHP(RBAC)权限管理系统_第9讲_添加权限”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理功能。RBAC是一种常用的身份验证...
3. **RBAC在ThinkPHP中的实现**:在ThinkPHP中实现RBAC,首先需要设计数据表结构,包括用户表、角色表和权限表,以及角色-权限关联表。用户表存储用户信息,角色表存储角色信息,权限表存储系统中可操作的各种权限,...
在本节教程“ThinkPHP(RBAC)权限管理系统_第5讲_添加角色”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现RBAC(Role-Based Access Control,基于角色的访问控制)机制,以及如何添加新的角色。RBAC是一种...
在本节教程“ThinkPHP(RBAC)权限管理系统_第6讲_添加角色”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现角色(Role-Based Access Control,RBAC)的管理,尤其是如何添加新的角色。RBAC是一种广泛使用的...
在这个ThinkPHP5的RBAC案例中,我们将深入探讨如何利用该框架实现有效的权限控制。 ### 1. ThinkPHP5框架基础 ThinkPHP5采用了MVC(Model-View-Controller)设计模式,将业务逻辑、数据处理和界面展示分离,提高了...
在本节课程“ThinkPHP(RBAC)权限管理系统_第25讲_RBAC认证配置信息”中,我们将深入探讨如何在ThinkPHP框架下构建一个基于RBAC(Role-Based Access Control,角色基础的访问控制)的权限管理系统。RBAC是一种常用的...
在本节课程“ThinkPHP(RBAC)权限管理系统_第21讲_角色管理之配置权限”中,我们将深入探讨如何在基于ThinkPHP框架的RBAC(Role-Based Access Control,基于角色的访问控制)系统中实现角色管理和权限配置。RBAC是一...
在本案例中,"thinkphp5.0 权限认证管理模块 插件 RBAC AUTH权限认证管理-tp5auth.zip" 提供了一个RBAC(Role-Based Access Control,基于角色的访问控制)权限认证管理插件,用于帮助开发者实现细粒度的权限分配。...
《深入理解ThinkPHP5.0.5:框架详解与实战应用》 ThinkPHP5.0.5是一款基于PHP7设计的轻量级、高性能的国产Web开发框架,它以其简洁的代码、高效的性能以及强大的功能在PHP开发领域备受青睐。本篇文章将详细解析...
在本节课程“ThinkPHP(RBAC)权限管理系统_第30讲_角色导航菜单加载”中,我们将深入探讨如何在ThinkPHP框架下构建一个基于RBAC(Role-Based Access Control,角色基础访问控制)的权限管理系统,并重点讲解如何实现...
在本节课程“ThinkPHP(RBAC)权限管理系统_第8讲_添加权限”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现RBAC(Role-Based Access Control,基于角色的访问控制)机制,以及如何添加新的权限。RBAC是一种...
3. 响应收集:用户提交问卷后,数据应被存储在数据库中,形成问卷响应记录。这部分涉及控制器处理POST请求,以及模型的数据存储。 4. 数据分析:源码可能还包含了数据分析功能,如统计答题人数、选项选择比例等,这...
本压缩包“thinkphp_thinkphp_thinkphp5_”包含了一个基于ThinkPHP5的模板开发实例,旨在帮助开发者快速理解和运用ThinkPHP5框架进行项目开发。 首先,我们要理解ThinkPHP5的核心设计理念——“简洁、快速、优雅”...
3. `runtime` - 运行时目录,存放系统运行过程中产生的临时文件,如日志、编译后的视图文件等。 4. `extend` - 扩展目录,可以存放自定义的类库和扩展。 5. `vendor` - 第三方库目录,存放Composer管理的依赖包。 ...
在本节课程“ThinkPHP(RBAC)权限管理系统_第17讲_用户管理”中,我们将深入探讨如何在基于ThinkPHP框架构建的系统中实现RBAC(Role-Based Access Control,角色基础的访问控制)机制下的用户管理。RBAC是一种广泛...
ThinkPHP1.6.0RC1_Core提供了RBAC(Role-Based Access Control)角色权限控制,使得权限管理变得简单,适用于多用户、多角色的复杂应用场景。 9. 插件和钩子系统: 框架支持插件和钩子机制,允许开发者通过插入...
总结,"ThinkPHP(RBAC)权限管理系统_第1讲_权限分析"主要讲解了RBAC模型的基本概念及其在ThinkPHP框架下的实现方法,帮助开发者理解和掌握如何在实际项目中构建高效且安全的权限管理体系。通过学习这个教程,你可以...