RBAC 基于角色的权限访问控制(Role-Based Access Control)
2018-02-09 10:13
671 查看
RBAC
基于角色的权限访问控制(Role-Based Access Control)。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。 RBAC是项目权限管理中一种常见的解决方案,它可以有效处理基于角色的权限访问控制(包括:一个用户拥有多个角色,角色可以调整,权限可以回收等各种复杂情况)。
下面简单介绍一下,使用RBAC所有需要的基础数据表设计:
2.1、用户表
2.2、角色表
2.3、权限表
2.4、用户角色(关系)表
2.5、角色权限(关系)表
简洁sql可以参考如下:SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for access #权限表
-- ----------------------------
DROP TABLE IF EXISTS `access`;
CREATE TABLE `access` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(50) NOT NULL DEFAULT '' COMMENT '权限名称',
`urls` varchar(1000) NOT NULL DEFAULT '' COMMENT 'json 数组',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效',
`updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',
`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='权限详情表';
-- ----------------------------
-- Table structure for role #角色表
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '角色名称',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效',
`updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',
`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='角色表';
-- ----------------------------
-- Table structure for role_access #角色权限(关系)表
-- ----------------------------
DROP TABLE IF EXISTS `role_access`;
CREATE TABLE `role_access` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`role_id` int(11) NOT NULL DEFAULT '0' COMMENT '角色id',
`access_id` int(11) NOT NULL DEFAULT '0' COMMENT '权限id',
`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
PRIMARY KEY (`id`),
KEY `idx_role_id` (`role_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='角色权限表';
-- ----------------------------
-- Table structure for user #用户表
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名',
`email` varchar(30) NOT NULL DEFAULT '' COMMENT '邮箱',
`is_admin` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否是超级管理员 1表示是 0 表示不是',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效',
`updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',
`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
PRIMARY KEY (`id`),
KEY `idx_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='用户表';
-- ----------------------------
-- Table structure for user_role #用户角色(关系)表
-- ----------------------------
DROP TABLE IF EXISTS `user_role`;
CREATE TABLE `user_role` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`role_id` int(11) NOT NULL DEFAULT '0' COMMENT '角色ID',
`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',
PRIMARY KEY (`id`),
KEY `idx_uid` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户角色表';
说明:另外,一个用户多个角色,角色允许调整,权限允许回收等其他情况,可以具体通过增加或者调整数据表字段来实现。
相关文章推荐
- Azure ARM (17) 基于角色的访问控制 (Role Based Access Control, RBAC) - 自定义Role
- RBAC(Role-Based Access Control,基于角色的访问控制)
- RBAC(Role-Based Access Control,基于角色的访问控制)
- RBAC(Role-Based Access Control )基于角色的访问控制
- Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role
- RBAC(Role-Based Access Control)基于角色的访问控制
- RBAC(Role-Based Access Control,基于角色的访问控制)
- RBAC (Role-Based Access Control)基于角色的访问控制
- RBAC(Role-Based Access Control,基于角色的访问控制)
- yii基于角色的访问控制(Role-Based Access Control)
- 44.基于角色的访问控制(Role-Based Access Control)
- RBAC 角色访问控制(Role Based Access Control)介绍
- RBAC即角色访问控制(Role Based Access Control)
- 继续摘抄:角色访问控制(Role Based Access Control,RBAC)
- RBAC(Rule Based Access Control,基于规则的访问控制)
- SAP BW权限管理基于角色的权限管理(Role-Based Access Control)
- RBAC(Role-Based Access Control)基于角色的访问控制
- 扩展RBAC用户角色权限设计方案Role-Based Access Control
- Yii2基于角色的访问控制权限RBAC表结构原理分析
- 权限管理:RBAC(基于角色的访问控制)SpringMVC实现