php实现rbac权限管理

介绍:

RBAC(Role-Based Access Control)基于角色的权限管理方式。

RBAC的最大特征就是将权限跟角色挂钩,用户又跟角色挂钩。

优点: ①管理维护上比较容易; ②在项目开发初期,权限体系就已经有成型的标准;

所以一般在大型网站的后台都会使用RBAC权限分配方式进行管理。

这种权限到底是怎么实现的呢?看下图表的关系

代码的具体实现:

1:根据用户的role_id进行权限列表的查询 显示响应的操作菜单

2:对数据进行展示

在if condition语句中,如果条件是两个数组变量的点形式进行比较,则必须要在最后一个变量后面加上空格,否则条件不成立。

3:显示效果如下:

这里简单在说下tp框架的rbac的实现原理:

1:创建相关的表

CREATE TABLE IF NOT EXISTS `think_access` (

`role_id` smallint(6) unsigned NOT NULL,

`node_id` smallint(6) unsigned NOT NULL,

`level` tinyint(1) NOT NULL,

`module` varchar(50) DEFAULT NULL,

KEY `groupId` (`role_id`),

KEY `nodeId` (`node_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `think_node` (

`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(20) NOT NULL,

`title` varchar(50) DEFAULT NULL,

`status` tinyint(1) DEFAULT '0',

`remark` varchar(255) DEFAULT NULL,

`sort` smallint(6) unsigned DEFAULT NULL,

`pid` smallint(6) unsigned NOT NULL,

`level` tinyint(1) unsigned NOT NULL,

PRIMARY KEY (`id`),

KEY `level` (`level`),

KEY `pid` (`pid`),

KEY `status` (`status`),

KEY `name` (`name`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `think_role` (

`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(20) NOT NULL,

`pid` smallint(6) DEFAULT NULL,

`status` tinyint(1) unsigned DEFAULT NULL,

`remark` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `pid` (`pid`),

KEY `status` (`status`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

CREATE TABLE IF NOT EXISTS `think_role_user` (

`role_id` mediumint(9) unsigned DEFAULT NULL,

`user_id` char(32) DEFAULT NULL,

KEY `group_id` (`role_id`),

KEY `user_id` (`user_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2:配置基础设置:

'USER_AUTH_ON' =>true, //是否需要认证

'USER_AUTH_TYPE' => 1, //认证类型 1表示登录认证,2表示实时认证

'USER_AUTH_KEY' =>'authId', // 认证识别号 $_SESSION['authId'] = 用户的id

'REQUIRE_AUTH_MODULE'=> '', // 需要认证模块

'NOT_AUTH_MODULE' =>'Index', // 无需认证模块

'ADMIN_AUTH_KEY' => 'admin', //超级管理员的key $_SESSION['admin'] = xxxx;

//'USER_AUTH_GATEWAY' => // 认证网关

//'RBAC_DB_DSN' => // 数据库连接DSN

'RBAC_ROLE_TABLE' => 'oa_role', // 角色表名称

'RBAC_USER_TABLE' => 'oa_role_user', // 用户表和角色表的关系

'RBAC_ACCESS_TABLE' =>'oa_access', // 权限表名称

'RBAC_NODE_TABLE' => 'oa_node', // 节点表名称

3:实现权限控制的功能

3:在公共控制器中调用该方法 实现权限的校验

php rbac实现,php实现rbac权限管理相关推荐

  1. RBAC新解 - 基于资源的权限管理

    1.什么是角色 当说到程序的权限管理时,人们往往想到角色这一概念.角色是代表一系列可执行的操作或责任的实体,用于限定你在软件系统中能做什么.不能做什么.用户帐号往往与角色相关联,因此,一个用户在软件系 ...

  2. RBAC基于角色的用户权限管理

    美国国家标准与技术研究院(The National Institute Of Standards And Technology,NIST)标准RABC(Role-based policies Acce ...

  3. J2EE-RBAC权限管理

    来源:http://blog.chinaunix.net/u1/52224/showart_415123.html 前不久在http://blog.chinaunix.net/u1/52224/sho ...

  4. RBAC权限管理总结

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 角色访问控制(RBAC) 引入了Role的概念,目的是为了隔离User(即动作主体,Subject)与Privile ...

  5. php人员权限管理(RBAC)

    在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法  (4).可以添 ...

  6. rbac权限管理 php,thinkPHP3.2使用RBAC实现权限管理的实现

    在thinkphp3.2中自己集成了RBAC来实现权限管理,RBAC实现类在项目中地址为:ThinkPHP/Librar/Org/Util/Rbac.class.php,其中集成了我们所需的权限管理操 ...

  7. rbac权限管理5张表_PHP之常用的RBAC权限管理详解

    文章正文 在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4) ...

  8. 杂项-权限管理:RBAC

    ylbtech-杂项-权限管理:RBAC 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中, ...

  9. php acl rbac,建站常用的用户权限管理模型ACL和RBAC的区别

    常用的权限管理模型ACL和RBAC的区别 1.ACL ACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行CRUD中的那 ...

  10. 会话管理 轻量php框架_SpringSecurity+JWT权限管理训练营-1基于RBAC模型的权限管理系统...

    1.什么是权限管理系统? 权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,可以说是后台项目的基本功,主要目的是对整个后台管理系统进行权限的控制,而针对的对象是员工,避免因权限控制缺失或操作 ...

最新文章

  1. 在Ubuntu8.10下为PHP安装coreseek全文检索引擎支持的详细步骤
  2. Matlab R2018a 中文版安装教程(同时适用于大部分其他版本)
  3. ListView使用技巧-更新中
  4. 内网用户之间使用MSN Messenger快速传送文件的小窍门
  5. 实验十:程序结构与数组 8、数组实训
  6. Angular页面在开发模式(DevMode)下的ng-reflect-属性是如何生成的
  7. vue --- 按钮的防重复点击事件
  8. Vuex的核心概念state
  9. Windows动态桌面原理
  10. NTP-网络时间协议
  11. Android 11 Beta 版本发布和相关活动推迟说明
  12. 新版MacBookPro风扇狂转的问题
  13. Cortana 设备建议
  14. 如何在html上放小游戏,如何在网页插入小游戏
  15. gentoo zen_Zen程序员的10条规则
  16. Yolov5 更改识别窗口大小
  17. 修改KindEditor上传图片数量和大小
  18. 第九讲:因子分析(Factor analysis)
  19. 毕业两年的大专生程序员工作总结(java后端)
  20. 三种方式实现网页二级菜单

热门文章

  1. 台式电脑键盘f1是计算机怎么取消,电脑开机要按F1怎么回事?开机要按F1怎么去掉?解决方法 (全文)...
  2. 外国人聊天中 :D 和 xD是什么意思
  3. Oracle 加密配置,【学习笔记】Oracle sqlnet设置网络传输加密案例
  4. iview 自定义指令实现Table左右横向拖拽
  5. 关于x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)
  6. 4. 列表一学完,Python 会一半,滚雪球学 Python
  7. Minecraft-服务器自定义生物、怪物(MythicMobs插件)
  8. Java中以时钟的效果显示时间
  9. 云端渲染时长1.58亿核小时,阿里云助力国漫巨制《新神榜:杨戬》提升视效
  10. Ad Hoc Networks TOPIC FIVE <Multicast Routing>【Personal Notes】