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

大致用到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_userDESC t_roleDESC t_menuDESC 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'); -- SYSINSERT INTO t_user(usr_account,usr_password) VALUES('chensheng','222'); -- SYSTEMINSERT INTO t_user(usr_account,usr_password) VALUES('zsf','333'); -- ADMININSERT 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('拉黑用户');-- SYSINSERT INTO t_menu(mu_name) VALUES('运费险');-- SYS SYSTEMINSERT INTO t_menu(mu_name) VALUES('上架');-- SYS SYSTEM ADMININSERT INTO t_menu(mu_name) VALUES('下架');-- SYS SYSTEM ADMININSERT INTO t_menu(mu_name) VALUES('下单');-- USERINSERT 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;

经典权限系统设计(五张表)相关推荐

  1. RBAC经典角色权限系统设计五张表及拓展应用

    大家都知道,权限系统是每个系统里面必备的最基本的系统,然而权限系统设计有时挺麻烦的,现在整理了下,给正在开发此模块的朋友提供一个思路! 设计基础:用户.角色.权限三大核心表,加上用户角色.角色权限两个 ...

  2. ASP.NET-权限管理五张表

    ASP.NET 权限管理五张表 权限管理的表(5张表) 每个表里面必有的一些信息 序号 名称  字段  类型   主键 默认值 是否为空 备注 1  用户ID  ID      INT     是   ...

  3. rbac权限管理5张表_PHP之常用的RBAC权限管理详解

    文章正文 在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4) ...

  4. 关于权限五张表的独到见解

    设计基础: 用户.角色.权限三大核心表,加上用户角色.角色权限两个映射表(用于给用户表联系上权限表).这样就可以通过登录的用户来获取权限列表,或判断是否拥有某个权限. 大致用到5张表:用户表(User ...

  5. 闻风丧胆系统角色权限五张表的设计

    众所周知,权限系统是每个系统里面必备的最基本的系统,然而权限系统设计有时挺麻烦的,,现在整理了下,给正在开发此模块的朋友一个思路! 设计基础:用户.角色.权限三大核心表,加上用户角色.角色权限两个映射 ...

  6. rbac权限管理5张表_Laravel5实现RBAC权限管理

    学习php,你就要学会一门框架教程,以后在工作上,基本都是用框架来驰骋你的PHP世界与领域,所以掌握一门框架是很重要的.据调查,现在用框架最多的就属ThinkPHP5 和Laravel5,Yii2.. ...

  7. rbac权限管理5张表_thinkphp框架下基于rbac的后台程序

    最近接了一个小项目,给一家车辆运营管理的公司做一个小的后台管理程序(说是推进无纸化办公模式). 项目的情况是,根据不同部门,不同权限的员工给予不同的操作许可. 增加实时录入功能(搭配移动端使用). 像 ...

  8. 权限管理需要哪几张表

    权限管理的五张表 一.五张表 1.用户表 user 2.角色表 role 3.权限表也叫资源表 permission 4.用户角色表 user_role_relation 5.角色权限表 role_p ...

  9. 工作流管理系统开发之十二 同一张表单在流程多节点中流转的权限控件

    以前写过一篇  表单权限与流程的权限控制:文章,没有具体的去实现,实践证明,同一张表单在多流程节点中流转,是工作流和电子表单必须要处理的问题. 工作流系统和电子表单相结合,达到同一张表单在流程的各个节 ...

最新文章

  1. linux获取近一小时日志,Linux分析日志获取最多访问的前10个IP
  2. 以下属于单例模式的优点的是_三、单例模式详解
  3. 小企业服务器设置位置,小企业服务器配置
  4. Ubuntu之Docker安装
  5. 熊猫多模式站群-开发日志
  6. android6.0权限管理工具EasyPermissionUtil
  7. 基于JAVA+SpringMVC+MYSQL的苗木销售系统
  8. spring 的延迟加载
  9. 锐捷网关交换机开启dhcp服务
  10. CAD 开发 渐变填充
  11. 数字电路逻辑设计_第三版_微课版_第五章思考题与练习题(附答案)
  12. 常用Quartz cron表达式例子
  13. 利用python进行数据分析第二版pdf百度云_利用Python进行数据分析(原书第2版) 中文翻译pdf高清版...
  14. 风险预测模型_利用好预后预测模型,2个月发篇4分+SCI不是梦
  15. BinaryOperator示例
  16. 一、Sails基础操作
  17. CSS3-3D动画制作旋转立方体
  18. 滑环在机电行业的应用
  19. keil5编译报错问题
  20. 批量输出dwg文件中的文本

热门文章

  1. mysqldb安装过程
  2. arm64版本的crossover
  3. Linux如何修改字符为中文以及安装中文输入法
  4. grains和pillar
  5. TCP IP 网络协议基础入门
  6. 2008年12月22日在BIOSREN上《BIOS职业的困惑》一帖的回帖
  7. grunt 监听文件改变自动编译js
  8. android8.1增大状态栏图标,转载▏手机状态栏看不懂的8个小图标,答案都在这里了!...
  9. 我与世界的三种状态:焦点(真北)、界内、黑洞
  10. 如何给自己的项目加上域名,在浏览器中被别人访问,使用支付宝进行沙箱支付