基于角色的权限访问控制 RBAC

五个表:

管理员表: z_admin 

CREATE TABLE `z_admin` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '管理员ID',
  `username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
  `created_ip` int(11) unsigned NOT NULL COMMENT '创建该管理员的时候的IP',
  `created_at` int(11) unsigned NOT NULL COMMENT '创建时间',
  `is_used` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否启用 0表示启用 1表示禁用',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员表';

规则表: z_rule

CREATE TABLE `z_rule` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '规则ID',
  `rule_url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '验证规则',
  `parent_id` int(11) unsigned NOT NULL COMMENT '父ID',
  `rule_desc` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '规则描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='规则表';

角色表: z_role 

CREATE TABLE `z_role` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '角色ID',
  `role_name` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名',
  `role_desc` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色描述',
  `created_at` int(11) unsigned NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';

管理员角色关系表: z_admin_role

 CREATE TABLE `z_admin_role` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `admin_id` smallint(5) unsigned NOT NULL COMMENT '管理员ID',
  `role_id` smallint(5) unsigned NOT NULL COMMENT '角色ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `admin_role` (`admin_id`,`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员与角色表关系表';

角色规则关系表:    z_role_rule 

CREATE TABLE `z_role_rule` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `role_id` smallint(5) unsigned NOT NULL COMMENT '角色ID',
  `rule_id` smallint(5) unsigned NOT NULL COMMENT '规则ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `role_rule` (`role_id`,`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色规则表';

关系: 

 一个管理员可以有多个身份(角色),一个身份(角色)可以有多个管理员,所以 管理员与角色是多对多关系。

一个身份(角色)可以拥有多个规则,一个规则可以被多个身份(角色),所以角色和规则是多对多关系。

猜你喜欢

转载自blog.csdn.net/mrtwenty/article/details/81453676