`
wanghailiang333
  • 浏览: 199063 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

【转】thinkphp RBAC 详解

 
阅读更多

原文地址:thinkphp RBAC 详解

 

最近用thinkphp做了个项目,客户今天又提了个新要求 管理员分权限管理。以前大楷看过THINKPHP 的RBAC的介绍没仔细研究 ,现在用到了就找个地方把我对RBAC的理解记一下,免得以后忘记了。

先看下官方给的实例所用到的数据表

RBAC 用到了5个数据表

think_user (用户表)

think_role (用户分组表)

think_node (操作节点)

think_role_user (用户和用户分组的对应)

think_access (各个操作和用户组的对应)

这里重点说一下 think_note

think_note 其实就是记录下了整个网站操作对应的 项目名称 模块名称 和 操作名称。

字段name就是当项目,模块或者操作的名称了。

字段PID 记录他们的从属关系,比如某一个模块是属于哪个项目,某个操作属于哪个模块。

字段level 表示该节点的层级 换句话就是说 level=1 为项目 ,level=2为模块 ,level=3就是操作了,比如说 admin项目,他的PID 就是 0 (项目的PID都是0) level就是1,nane就是admin了,admin项目下面有的user模块,它的level就应该是2,pid就是admin的id, admin下面user模块的add操作,level就该是3了,pid就应该是前面的user对应的ID.

 

再说下 rbac类的 方法

authenticate($map,$model='')方法 传入查询用户的条件和用户表的MODEL 返回数组包含用户的信息

saveAccessList($authId=null)方法 传入用户的ID 此方法不返回值,只是设置 $_SESSION['_ACCESS_LIST']的值,其中包含了所有该用户对应的用户组的有权限操作的所有节点 $_SESSION['_ACCESS_LIST']['项目名']['模块名']['操作名'],以后判断权限就是判断当前项目,模块和操作是否在 $_SESSION['_ACCESS_LIST']中能找到。s

checkAccess() 方法 检测当前模块和操作是否需要验证 返回bool类型

checkLogin()方法 检测登录

AccessDecision($appName=APP_NAME) 方法 就是检测当前项目模块操作 是否在$_SESSION['_ACCESS_LIST']数组中,也就是说 在 $_SESSION['_ACCESS_LIST'] 数组中$_SESSION['_ACCESS_LIST']['当前操作']['当前模块']['当前操作']是否存在。如果存在表示有权限 否则返回flase。

 getAccessList($authId) 方法 通过查询数据库 返回权限列表 $_SESSION['_ACCESS_LIST']的值了。

 

上面的记录就是 我个人对RBAC的理解。在开发过程中还遇到个问题,我的项目一有一个 ,但是我又想把 几个模块分开管理。想了半天发现AccessDecision($appName=APP_NAME) 是可以传项目名称的。那么 我们先分几个组,也就是LEVEL=1,PID=0的,然后 把模块分组管理。在使用的时候就麻烦点。每个分组都建一个基类,在基类中if (! RBAC::AccessDecision ()) { 手动给 AccessDecision添加参数,就是当前分组的名称。然后属于某个分组的模块就引用这基类。这样就达到了同一项目下 分组管理模块的功能了。

分享到:
评论

相关推荐

    thinkphp rbac架构代码

    **ThinkPHP RBAC架构代码详解** 在Web开发中,权限管理是不可或缺的一部分,尤其是对于大型企业级应用。Role-Based Access Control(RBAC)基于角色的访问控制是一种有效的权限管理模式,它将用户与权限通过角色...

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

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

    基于ThinkPHP6的RBAC的后台管理系统源码, UI使用layUI

    《基于ThinkPHP6的RBAC后台管理系统与LayUI界面详解》 在现代Web开发中,构建高效、安全且易维护的后台管理系统是至关重要的。本文将深入探讨一个基于ThinkPHP6框架和LayUI前端库实现的角色权限控制(Role-Based ...

    PHP.zip_php后台_thinkPHP rbac_前端框架

    《PHP.zip:构建高效能的PHP后台与ThinkPHP RBAC前端框架详解》 在现代Web开发中,PHP作为服务器端脚本语言,以其强大的功能和灵活性深受开发者喜爱。结合ThinkPHP框架,我们可以快速构建出高性能的后台系统。而...

    ThinkPHP5_RBAC

    **ThinkPHP5 RBAC系统详解** ThinkPHP5是一款流行的PHP框架,它以其高效、简洁的代码结构和丰富的功能集在Web开发领域广受欢迎。RBAC(Role-Based Access Control,基于角色的访问控制)是一种常见的权限管理模型,...

    thinkphp3.1 rbac

    《ThinkPHP3.1框架下的RBAC用户角色认证管理详解》 在Web开发领域,权限控制是不可或缺的一部分,尤其在企业级应用中更是如此。ThinkPHP作为一款深受开发者喜爱的PHP框架,其3.1版本提供了强大的RBAC(Role-Based ...

    ThinkPHP的RBAC,基于角色的权限控制-下载地址+2011年最新.txt

    根据给定文件的信息,我们可以提炼出关于ThinkPHP的RBAC(基于角色的访问控制)的知识点,尽管部分内容似乎与主题不完全相关,但从标题、描述和部分提供的内容中,我们仍能归纳出以下要点。 ### ThinkPHP的RBAC概念...

    ThinkPHP5.1RBAC.zip

    《基于ThinkPHP5.1与LayuiMini的RBAC权限管理系统详解》 在现代Web应用开发中,权限管理是一个至关重要的环节。本系统“ThinkPHP5.1RBAC”结合了当下流行的前端框架Layuimini和强大的后端框架ThinkPHP5.1,构建了一...

    ThinkPHP的RBAC(基于角色权限控制)深入解析

    ThinkPHP框架提供了内置的RBAC支持,通过以下五个核心数据表来实现: 1. **think_user**:用户表,存储用户的基本信息。 2. **think_role**:角色表,记录系统中的各个角色及其属性。 3. **think_node**:操作节点...

    详解基于ThinkPHP5.1+RBAC权限管理

    本课程基于ThinkPHP5.1讲解从Rbac原理分析到数据库设计到实现完整Rbac权限管理控制学员通过本套课程学习,可以掌握Rbac的原理及在实际开发中更好的使用Rbac,也可以将Rbac的思想移植到其他PHP框架中

    thinkphpRBAC

    ### ThinkPHP RBAC类使用详解 #### 一、引言 RBAC(Role-Based Access Control,基于角色的访问控制)是一种常见的权限管理机制,在实际应用中广泛用于实现系统的权限管理和控制功能。ThinkPHP框架下的RBAC类是...

    基于thinkphp6的后台权限管理源码

    《基于ThinkPHP6的后台权限管理系统详解》 在现代Web应用开发中,权限管理是不可或缺的一部分,它确保了系统的安全性和用户访问的合法性。本文将深入探讨如何利用ThinkPHP6框架构建一个强大的后台权限管理系统。...

    ThinkPHP基于角色的访问控制

    《基于ThinkPHP的角色访问控制(RBAC)实现详解》 在Web开发中,权限控制是一个不可或缺的重要环节,它能确保用户只能访问他们被授权的资源,从而保障系统的安全性和稳定性。ThinkPHP,作为国内广泛使用的PHP框架,...

    RBAC权限管理系统

    **RBAC权限管理系统详解** 在IT行业中,权限管理是系统安全的重要组成部分,尤其在企业级应用中更是不可或缺。本文将围绕“RBAC权限管理系统”展开,解析其核心概念、技术选型以及实现过程。 **RBAC(Role-Based ...

    基于thinkphp开发的简单的教学管理系统

    《基于ThinkPHP开发的简单教学管理系统详解》 在IT行业中,框架是开发高效、稳定应用的重要工具,而ThinkPHP作为国内广泛使用的PHP框架之一,深受开发者喜爱。本系统以“基于ThinkPHP开发的简单教学管理系统”为...

    php企业thinkphp框架源码

    在企业级应用中,权限控制是必不可少的,ThinkPHP提供了RBAC(Role-Based Access Control)角色权限控制机制,方便进行多层级、多维度的权限管理。 四、入口文件 `index.php`是ThinkPHP项目的入口文件,它是所有...

    thinkphp5.1cms后台

    《ThinkPHP5.1 CMS后台开发详解》 对于初涉软件开发的新手而言,掌握一款强大的框架至关重要。ThinkPHP5.1,作为国内广泛应用的PHP框架,以其易学易用、功能全面、性能优秀等特点,成为了PHP开发者的首选。本文将...

Global site tag (gtag.js) - Google Analytics