php rbac实现,php实现rbac权限管理
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权限管理相关推荐
- RBAC新解 - 基于资源的权限管理
1.什么是角色 当说到程序的权限管理时,人们往往想到角色这一概念.角色是代表一系列可执行的操作或责任的实体,用于限定你在软件系统中能做什么.不能做什么.用户帐号往往与角色相关联,因此,一个用户在软件系 ...
- RBAC基于角色的用户权限管理
美国国家标准与技术研究院(The National Institute Of Standards And Technology,NIST)标准RABC(Role-based policies Acce ...
- J2EE-RBAC权限管理
来源:http://blog.chinaunix.net/u1/52224/showart_415123.html 前不久在http://blog.chinaunix.net/u1/52224/sho ...
- RBAC权限管理总结
2019独角兽企业重金招聘Python工程师标准>>> 一.简介 角色访问控制(RBAC) 引入了Role的概念,目的是为了隔离User(即动作主体,Subject)与Privile ...
- php人员权限管理(RBAC)
在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4).可以添 ...
- rbac权限管理 php,thinkPHP3.2使用RBAC实现权限管理的实现
在thinkphp3.2中自己集成了RBAC来实现权限管理,RBAC实现类在项目中地址为:ThinkPHP/Librar/Org/Util/Rbac.class.php,其中集成了我们所需的权限管理操 ...
- rbac权限管理5张表_PHP之常用的RBAC权限管理详解
文章正文 在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4) ...
- 杂项-权限管理:RBAC
ylbtech-杂项-权限管理:RBAC 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中, ...
- php acl rbac,建站常用的用户权限管理模型ACL和RBAC的区别
常用的权限管理模型ACL和RBAC的区别 1.ACL ACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行CRUD中的那 ...
- 会话管理 轻量php框架_SpringSecurity+JWT权限管理训练营-1基于RBAC模型的权限管理系统...
1.什么是权限管理系统? 权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,可以说是后台项目的基本功,主要目的是对整个后台管理系统进行权限的控制,而针对的对象是员工,避免因权限控制缺失或操作 ...
最新文章
- 在Ubuntu8.10下为PHP安装coreseek全文检索引擎支持的详细步骤
- Matlab R2018a 中文版安装教程(同时适用于大部分其他版本)
- ListView使用技巧-更新中
- 内网用户之间使用MSN Messenger快速传送文件的小窍门
- 实验十:程序结构与数组 8、数组实训
- Angular页面在开发模式(DevMode)下的ng-reflect-属性是如何生成的
- vue --- 按钮的防重复点击事件
- Vuex的核心概念state
- Windows动态桌面原理
- NTP-网络时间协议
- Android 11 Beta 版本发布和相关活动推迟说明
- 新版MacBookPro风扇狂转的问题
- Cortana 设备建议
- 如何在html上放小游戏,如何在网页插入小游戏
- gentoo zen_Zen程序员的10条规则
- Yolov5 更改识别窗口大小
- 修改KindEditor上传图片数量和大小
- 第九讲:因子分析(Factor analysis)
- 毕业两年的大专生程序员工作总结(java后端)
- 三种方式实现网页二级菜单
热门文章
- 台式电脑键盘f1是计算机怎么取消,电脑开机要按F1怎么回事?开机要按F1怎么去掉?解决方法 (全文)...
- 外国人聊天中 :D 和 xD是什么意思
- Oracle 加密配置,【学习笔记】Oracle sqlnet设置网络传输加密案例
- iview 自定义指令实现Table左右横向拖拽
- 关于x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)
- 4. 列表一学完,Python 会一半,滚雪球学 Python
- Minecraft-服务器自定义生物、怪物(MythicMobs插件)
- Java中以时钟的效果显示时间
- 云端渲染时长1.58亿核小时,阿里云助力国漫巨制《新神榜:杨戬》提升视效
- Ad Hoc Networks TOPIC FIVE <Multicast Routing>【Personal Notes】