RBAC

Posted cshaptx4869

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RBAC相关的知识,希望对你有一定的参考价值。

一、RBAC介绍

https://www.jb51.net/article/121510.htm

https://www.jb51.net/article/121512.htm

 

二、建模

技术图片

技术图片

 

 三、SQL

CREATE TABLE `user` (

`id ` int UNSIGNED NOT NULL AUTO_INCREMENT,

`username` varchar(30) NOT NULL COMMENT 用户名,

`password` varchar(50) NOT NULL,

`mobile` varchar(11) NOT NULL COMMENT 手机号,

`email` varchar(255) NOT NULL COMMENT 邮箱,

`status` tinyint UNSIGNED NOT NULL DEFAULT 0 COMMENT 用户状态 0-未激活 1-正常 2-已停用,

`created_at` int NOT NULL DEFAULT 0,

`updated_at` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id `) ,

UNIQUE INDEX (`username` ASC),

UNIQUE INDEX (`mobile` ASC)

)

COMMENT = 系统-用户表;



CREATE TABLE `role` (

`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`role_name` varchar(255) NOT NULL COMMENT 角色名,

`role_type` enum(system,custom) NOT NULL DEFAULT custom COMMENT 角色类型,

`role_desc` varchar(0) NOT NULL COMMENT 角色描述,

`status` tinyint(255) UNSIGNED NOT NULL DEFAULT 1 COMMENT 角色状态 0-已停用 1-使用中,

`created_at` int NOT NULL DEFAULT 0,

`updated_at` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`) 

)

COMMENT = 系统-角色表;



CREATE TABLE `user_role` (

`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`uid` int(11) NOT NULL,

`role_id` int NOT NULL,

`created_at` int NOT NULL DEFAULT 0,

`updated_at` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`) ,

UNIQUE INDEX `user_role` (`uid` ASC, `role_id` ASC)

)

COMMENT = 系统-用户角色关联表;



CREATE TABLE `role_resource` (

`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`role_id` int(11) NOT NULL,

`resource_type` enum(menu,element) NOT NULL,

`resource_id` int(11) NULL,

`created_at` int NOT NULL DEFAULT 0,

`updated_at` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`) ,

UNIQUE INDEX `role_resource` (`role_id` ASC, `resource_type` ASC, `resource_id` ASC)

)

COMMENT = 系统-角色资源表;



CREATE TABLE `menu` (

`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`parent_id` int NOT NULL DEFAULT 0 COMMENT 父菜单id,

`menu_name` varchar(30) NOT NULL COMMENT 菜单名称,

`menu_icon` varchar(50) NOT NULL COMMENT 菜单图标,

`menu_href` varchar(80) NOT NULL COMMENT 菜单跳转链接,

`menu_desc` varchar(255) NOT NULL COMMENT 菜单描述,

`sort_order` int NOT NULL COMMENT 排序 越小越前,

`created_at` int NOT NULL DEFAULT 0,

`updated_at` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`) 

)

COMMENT = 系统-菜单表;



CREATE TABLE `element` (

`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`element_name` varchar(30) NOT NULL,

`element_type` enum(page,block) NOT NULL DEFAULT page COMMENT 元素类型,

`element_code` varchar(50) NOT NULL COMMENT 页面元素编号(路由),

`element_desc` varchar(255) NOT NULL COMMENT 元素描述,

`sort_order` int NOT NULL DEFAULT 0 COMMENT 排序,

`created_at` int NOT NULL DEFAULT 0,

`updated_at` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`) ,

INDEX ()

)

COMMENT = 系统-元素表;



CREATE TABLE `api` (

`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`api_name` varchar(30) NOT NULL COMMENT 接口名称,

`api_route` varchar(50) NOT NULL COMMENT 接口路由,

`api_method` enum(post,get,put,delete) NOT NULL COMMENT 接口请求方法,

`api_desc` varchar(255) NOT NULL COMMENT 接口描述,

`sort_order` int NOT NULL DEFAULT 0,

`created_at` int NOT NULL DEFAULT 0,

`updated_at` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`) 

)

COMMENT = 系统-接口表;



CREATE TABLE `element_api` (

`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`element_id` int(11) NOT NULL,

`api_id` int(11) NOT NULL,

`created_at` int NOT NULL DEFAULT 0,

`updated_at` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`) ,

UNIQUE INDEX `element_api` (`element_id` ASC, `api_id` ASC)

)

COMMENT = 系统-元素接口关联表;

 

以上是关于RBAC的主要内容,如果未能解决你的问题,请参考以下文章

Rbac_权限管理

深度解析RBAC用户-角色-权限设计方案,以及核心逻辑代码的讲解

干货分享对于RBAC与shiro的一点理解

聊一个 GitHub 上开源的 RBAC 权限管理系统,很6!

权限想要细化到按钮,怎么做?

权限想要细化到按钮,怎么做?