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和页面的名称

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

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

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

  1. 基于SpringSecurity实现RBAC权限控制(待完善)

    Spring Security是一个为企业应用系统提供声明式的安全访问控制功能,减少为了企业应用系统安全控制而编写的大量重复代码. 认证: spring security的原理就是使用很多的拦截器对U ...

  2. ThinkPHP的Rbac权限控制

    RBAC(Role-Based Access Controll)基于角色的访问控制 在 ThinkPHP3.2.3 中 RBAC 类位于 /ThinkPHP/Library/Org/Util/Rbac ...

  3. 基于中间件的RBAC权限控制

    RBAC 是什么 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联. 在 Django 中,权限就是用户对一个包含正则表达式 url ...

  4. python RBAC权限控制模型扩展 基于JWT实现

    jwt,全称 json web token,是使用一定的加密规则生成的token串来保证登录状态.验证用户身份.做权限认证等工作 以往保存用户登录状态多用session实现,但是当服务涉及多台服务器分 ...

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

    1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 或者参考yii2实战教程之详细安装步骤 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/con ...

  6. ThinkPHP中RBAC权限带菜单栏显示和详细权限操作

    RBAC是什么,能解决什么难题? RBAC是Role-Based Access Control的首字母,译成中文即基于角色的权限访问控制,说白了也就是用户通过角色与权限进行关联[其架构灵感来源于操作系 ...

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

    前两篇关于vue权限路由文章的填坑,说了一堆理论,是时候操作一波了. vue权限路由实现方式总结 vue权限路由实现方式总结二 选择d2-admin是因为element-ui的相关开源项目里,d2-a ...

  8. ThinkPHP中RBAC权限管理的简单应用

    RBAC英文全称(Role-Based Access Controller)即基于角色的权限访问控制,简单来讲,一个用户可以拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色-权限”的授 ...

  9. Kubernetes-16:一文详解ServiceAccount及RBAC权限控制

    一.ServiceAccount 1.ServiceAccount 介绍 首先Kubernetes中账户区分为:User Accounts(用户账户) 和 Service Accounts(服务账户) ...

随机推荐

  1. Linux命令(九)查找文件find

    4. find -type f   文件 d  目录 l   连接 5. find -size 6. find -maxdepth -2 (最深路径为2) 7. find ./ -maxdepth 1 ...

  2. JavaScript 数字转汉字+element时间选择器快速选择

    window.CN = { : '一', : '二', : '三', : '四', : '五', : '六', : '七', : '八', : '九', : '零' } window.LEVEL = ...

  3. FastReport报表打印总页数的问题?

    设置两次报表后加入引号内内容 "第[Page#]页 共[TotalPages#]页" 本站文章除注明转载外,均为本站原创或翻译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果 ...

  4. CSS进阶之模拟Bootstrap网格布局

    目前暂时实现效果,容后面整理心得,先贴上源代码. 源码 <!DOCTYPE html> <html> <head> <title>demo bootst ...

  5. J - Long Long Message (最长公共子串)

    题目链接:https://cn.vjudge.net/contest/283743#problem/J 题目大意:给你两个字符串,问你两个字符串的最长的公共子串. 具体思路:把两个字符串合在一起,然后 ...

  6. 连接Linux服务器操作Oracle数据库

    连接Linux服务器操作Oracle数据库   由于项目已经上线,现场的数据库服务器不允许直接用Oracle的客户端plsqldev.exe来连接,只能通过Linux服务器的命令来操作. 以下是用Se ...

  7. 【转】深入浅出JMS(一)--JMS基本概念

    摘要 The Java Message Service (JMS) API is a messaging standard that allows application components bas ...

  8. 集成Struts2+Spring+Hibernate_两种方案

    集成Struts2+Spring+Hibernate 第一种方案:让Spring创建Struts2的Action,不让Spring完全管理Struts2的Action      Struts2 Act ...

  9. HTTP基础知识2

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  10. 蝉知CMS本地迁移到服务器具体步骤

    蝉知迁移步骤(2个方案,二选一即可) 方案一(整个chanzhi(eps)目录拷贝,假设新安装的蝉知文件夹名称为chanzhieps): 1.在新服务器上安装相同版本(版本号必须一致)的蝉知(安装文档 ...