经典权限系统设计(五张表)

简介: 经典权限系统设计(五张表)

经典权限系统设计(五张表)

大致用到5张表:用户表(UserInfo)、角色表(RoleInfo)、菜单表(MenuInfo)、用户角色表(UserRole)、角色菜单表(RoleMenu)。

  各表的大体表结构如下:

  1、用户表(UserInfo):Id、UserName、UserPwd

  2、角色表(RoleInfo):Id、RoleName

  3、菜单表(MenuInfo):Id、MenuName

  4、用户角色表(UserRole):Id、UserId、RoleId

  5、角色菜单表(RoleMenu):Id、RoleId、MenuId

最关键的地方是,某个用户登录时,如何查找该用户的菜单权限?其实一条语句即可搞定:

假如用户的用户名为zhangsan,则他的菜单权限查询如下:

Select m.Id,m.MenuName from MenuInfo m ,UserInfo u UserRole ur, RoleMenu rm Where m.Id = rm.MenuId and ur.RoleId = rm.RoleId and ur.UserId = u.Id and u.UserName = 'zhangsan'

权限管理系统经典的五张表

DESC t_user
DESC t_role
DESC t_menu
DESC t_userrole

DROP TABLE IF EXISTS t_user;
DROP TABLE IF EXISTS t_role;
DROP TABLE IF EXISTS t_menu;
DROP TABLE IF EXISTS t_userrole;

CREATE TABLE t_user(
usr_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID',
usr_account VARCHAR(32) NOT NULL UNIQUE COMMENT '账号',
usr_password CHAR(32) NOT NULL COMMENT '密码'
)COMMENT '用户表';

CREATE TABLE t_role(
ro_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID',
ro_name VARCHAR(32) NOT NULL UNIQUE COMMENT '角色名'
)COMMENT '角色表';

CREATE TABLE t_menu(
mu_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID',
mu_name VARCHAR(32) NOT NULL UNIQUE COMMENT '菜名'
)COMMENT '菜单表';

CREATE TABLE t_userrole(
ur_usr_id INT COMMENT '用户ID',
ur_ro_id INT COMMENT '角色ID'
)COMMENT '用户角色表';

CREATE TABLE t_rolemenu(
rm_ro_id INT COMMENT '角色ID',
rm_mu_id INT COMMENT '菜单ID',
PRIMARY KEY(rm_ro_id,rm_mu_id),
FOREIGN KEY(rm_ro_id) REFERENCES t_role(ro_id),
FOREIGN KEY(rm_mu_id) REFERENCES t_menu(mu_id)
)COMMENT '角色菜单表';

INSERT INTO t_user(usr_account,usr_password) VALUES('chenxueli','111'); -- SYS
INSERT INTO t_user(usr_account,usr_password) VALUES('chensheng','222'); -- SYSTEM
INSERT INTO t_user(usr_account,usr_password) VALUES('zsf','333'); -- ADMIN
INSERT INTO t_user(usr_account,usr_password) VALUES('zs','444'); -- USER

INSERT INTO t_role(ro_name) VALUES('SYS');
INSERT INTO t_role(ro_name) VALUES('SYSTEM');
INSERT INTO t_role(ro_name) VALUES('ADMIN');
INSERT INTO t_role(ro_name) VALUES('USER');

INSERT INTO t_menu(mu_name) VALUES('拉黑用户');-- SYS
INSERT INTO t_menu(mu_name) VALUES('运费险');-- SYS SYSTEM
INSERT INTO t_menu(mu_name) VALUES('上架');-- SYS SYSTEM ADMIN
INSERT INTO t_menu(mu_name) VALUES('下架');-- SYS SYSTEM ADMIN
INSERT INTO t_menu(mu_name) VALUES('下单');-- USER
INSERT INTO t_menu(mu_name) VALUES('付款');-- USER

INSERT INTO t_userrole VALUES(1,1),(1,2);
INSERT INTO t_userrole VALUES(2,2);
INSERT INTO t_userrole VALUES(3,3);
INSERT INTO t_userrole VALUES(4,4);

INSERT INTO t_rolemenu VALUES(1,1),(1,2);
INSERT INTO t_rolemenu VALUES(2,2),(2,3)(2,4);
INSERT INTO t_rolemenu VALUES(3,3),(3,4);
INSERT INTO t_rolemenu VALUES(4,5),(4,6);

SELECT * FROM t_rolemenu ORDER BY ro_id;
相关文章
|
存储 数据安全/隐私保护 索引
设计一个完美的用户角色权限表
设计一个完美的用户角色权限表
1255 1
|
前端开发 easyexcel Java
Java+EasyExcel实现文件导入导出,导入导出如此简单
项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息,导出员工信息,手动输入比较繁琐,所以本篇博文教大家如何在Java中导入Excel文件与导出Excel文件
15687 3
Java+EasyExcel实现文件导入导出,导入导出如此简单
|
JavaScript
Vue3基础(24)___vue3中使用vuex
本文介绍了在Vue 3中如何使用Vuex进行状态管理,包括安装Vuex、创建store、定义state、mutations、actions、getters,以及在组件中使用这些选项。同时,还介绍了如何通过`$store`在组件内部访问和修改状态,以及如何使用命名空间对模块进行隔离。
481 3
|
存储 安全 API
权限设计种类【RBAC、ABAC】
权限设计种类【RBAC、ABAC】
2013 2
|
12月前
|
监控 NoSQL Java
若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)
若依(RuoYi)是一款基于Spring Boot和Vue.js的开源Java快速开发脚手架,支持OAuth2、JWT鉴权,集成多种安全框架和持久化框架。它提供了系统管理、监控管理、任务调度、代码生成等常用功能模块,适合中小型公司快速搭建Web应用。本文主要介绍若依框架的特点、版本发展、优缺点及项目部署步骤,帮助开发者快速上手并部署若依项目。
13970 3
若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)
|
存储 NoSQL 中间件
单点登录的原理、实现、以及技术方案比较详解
本文详细介绍单点登录(SSO)的定义、原理、实现细节,探讨其在大型网站中的应用,帮助读者理解如何通过分布式Session实现高效的用户认证与授权。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
单点登录的原理、实现、以及技术方案比较详解
|
前端开发 JavaScript Docker
拿下奇怪的前端报错(五):SyntaxError: Unexpected token ‘??=‘或‘xxx‘ - 基于容器搭建开发环境或许是更好的选择
在前端开发中,同时维护多个项目时可能会遇到不同Node.js版本的问题。低版本Node.js可能导致依赖无法安装或启动失败,而高版本Node.js则可能引起第三方库的兼容性问题。推荐使用Docker搭建独立的开发环境,以避免版本不一致带来的困扰。
3520 1
|
存储 消息中间件 JSON
DDD基础教程:一文带你读懂DDD分层架构
DDD基础教程:一文带你读懂DDD分层架构
|
Java 编译器 Spring
面试突击78:@Autowired 和 @Resource 有什么区别?
面试突击78:@Autowired 和 @Resource 有什么区别?
16552 6
|
负载均衡 网络协议 前端开发
一文快速上手 Nacos 注册中心+配置中心!
一文快速上手 Nacos 注册中心+配置中心!
8998 0