基于thinkphp的RBAC权限控制

RBAC  Role-Based Access Control

权限控制在后台管理中是十分常见的,它的模型大体上是下面这张图的形式

我用的字段和上面不一样,图只是个示例

一个简易的权限控制模型只需要3个表就行了

user表:记录用户的信息和用户的角色

->user_id:用户的id

->user_role_id:用户的角色信息  0,1,2分别为超级管理员,经理,员工

->其它省略。。。

role表:记录不同的角色信息,和他们拥有的权限

->role_id:角色的id    1为经理,2为员工,0无权限限制

->role_name:角色名称

->role_auth_ids: 存放权限的id

->role_auth_ac:该角色能够访问的页面

auth表:记录每个权限的具体信息

->auth_id:权限id
->auth_name:权限名称

->auth_pid:权限的父级权限的id

->auth_c:控制器的名称

->auth_a:显示页面的名称

->auth_path:用id表示权限的层级关系  0级权限为空,比如用户管理的id为5(假设它为最高级),那么它的auth_path为0,禁言用户为子权限,id为10。那么它的auth_path为5-10

->auth_level:权限的等级  0为一个目录下的最高权限,1为次级,2为次次级 如:商品管理(0)->商品列表(1)->添加商品。有些人能查看商品,但不一定能删除商品

当用户访问页面时,先获取用户的信息

user表中得到用户的角色信息,比如得到的是经理 id为1

现在再去角色信息表中获取,该角色的权限

能访问的权限Id有了,页面也有了。只要获取页面的路由,只要在我的权限内,则能访问,不再则显示没有权限

那么auth_path表好像没用到?一开始权限表是空的

我们添加权限的时候产生了id和页面的名称

然后再把这些权限给 经理和员工角色,所以他们的表里面有了对应的信息

然后给每个员工定义经理,员工等角色。。。。。。。

时间: 2024-10-26 16:52:08

基于thinkphp的RBAC权限控制的相关文章

ThinkPHP操作名权限控制

其实ThinkPHP已经内置了RBAC权限控制,操作也很方便,不过总是感觉平常的小站没有必要用RBAC.有的时候需求很简单,权限控制只检测到操作名上,不细分到方法名上.这样做完全没有必要用RBAC.好处:1.节省时间(有的时候老板定的交工时间是死的)2.懒人你懂的 权限的逻辑很简单,后台给每个用户添加一个字段,暂且命名为Competenct,  然后写一个给用户赋权限的多选框,类似于 每个多选框的值就是当前多选框的操作名,比如你有一个ArticleAction.class.php.那么你的val

vue基于d2-admin的RBAC权限管理解决方案

前两篇关于vue权限路由文章的填坑,说了一堆理论,是时候操作一波了. vue权限路由实现方式总结 vue权限路由实现方式总结二 选择d2-admin是因为element-ui的相关开源项目里,d2-admin的结构和代码是让我感到最舒服的,而且基于d2-admin实现RBAC权限管理也很方便,对d2-admin没有大的侵入性的改动. 预览地址 Github 相关概念 不了解RBAC,可以看这里企业管理系统前后端分离架构设计 系列一 权限模型篇 实现了RBAC模型权限控制 菜单与路由独立管理,完全

ThinkPHP中:RBAC权限控制的实习步骤

使用版本ThinkPHP3.1.3 第一步,建表及数据 第二步,建关联模型 第三步,控制器使用关联模型.配置文件 第四步,模板显示数据 第一步,建表及数据 在数据库中,建立一个companysvn数据库,库下建立五张表 建表好导入数据的代码如下 1 # -------------------------------------------------------- 2 # Host: 127.0.0.1 3 # Server version: 5.0.45-community-nt-log 4

thinkPHP的RBAC权限管理

thinkphp自带一个权限类:RBAC.class.php,里面有生成表的create table语句,也就是它的数据库设计,还有一些方法,比如getAccessList(),可以根据管理员ID号获得权限节点. 1.涉及到的表有五个,为了方便理解,可以总结为: 用户表(user):顾名思义,就是用户了,比如admin.张三.李四.王五 角色表(role):顾名思义,就是定义好的角色,比如财务管理员.文章管理员.产品管理员 用户角色关系表(user_role):顾名思义,就是将用户和角色对应起来

转:RBAC权限控制

名词解释: RBAC:Role-Based Access Control,基于角色的访问控制 关键词: RBAC,Java Shiro,Spring Security, 一. RBAC 要解决的常见问题 问题一:对某一个用户只授予一些特殊的权限 描述:既不希望扩大某一个角色的权限,也不希望因此创建出很多零碎的.只为一个用户而存在的角色. 问题二:性能问题 描述:B/S 下,菜单.页面.页面元素.dataset的列,这些层层权限判断过于复杂,容易造成系统访问非常缓慢. 问题三:如何减少 HardC

RBAC权限控制

名词解释: RBAC:Role-Based Access Control,基于角色的访问控制 关键词: RBAC,Java Shiro,Spring Security, 一. RBAC 要解决的常见问题 问题一: 对某一个用户只授予一些特殊的权限 描述:既不希望扩大某一个角色的权限,也不希望因此创建出很多零碎的.只为一个用户而存在的角色. 问题二: 性能问题 描述:B/S 下,菜单.页面.页面元素.dataset的列,这些层层权限判断过于复杂,容易造成系统访问非常缓慢. 问题三: 如何减少 Ha

yii2搭建完美后台并实现rbac权限控制案例教程

作者:白狼 出处:www.manks.top/article/yii2_frame_rbac_template 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/config/main-local.php 实际项目中本地的数据库往往跟线上数据库不一致, 我们这里配置到mai

rbac 权限控制

RBAC 的控制,大致是通过将角色的权限控制,来控制用户的权限. 需要构建的表为 用户表(user) ,角色表(role),节点表(node),三张主表 , 节点表内记录的是所有的权限和方法. 2张关联表,是为了关联3张数据表的,分别未 角色用户表(user_role),角色权限表(role_node),也可将两张表写成字段分别加入到用户表和权限表内; 废话不多说看下,键表语句如下 用户表: CREATE TABLE `wj_admin` ( `id` int(11) NOT NULL AUTO

基于session做的权限控制

一直听说做权限将登陆信息放在session中,实际也说不太出个所以然来,幸运在工作当中接触到了对应的代码的copy. 实现思路: 类似于粗粒度的权限控制 将权限控制的文件按包分隔好,对应的url前缀也遵照一些标准统一. 定义包装用户信息类,包括登录后的用户信息和登录状态,用户授权信息等 使用过滤器,拦截通用请求.登录请求之外的所有请求. 过滤器中进行session中包装用户信息类是否存在,是否登录,如果有且有效则跳转对应页面,无则跳转登录页面 登录完成在session中写入用户的具体信息,包括登