五分钟带你玩转SpringSecurity(三)常见又陌生,带你了解RBAC模型

举报
小鲍侃java 发表于 2021/09/09 23:53:27 2021/09/09
【摘要】 大多数小伙伴可能都了解,只不过对于名词比较陌生。RBAC就是用户-菜单-权限的一套解决方案,大多数的系统权限菜单方案都是RBAC模型, 其中包括5张表: 用户表 ( sys_user ):保存用户信息 角色表 ( sys_role ):保存角色信息 权限表 ( sys_node ):保存系统资源信息。如:菜单、按钮 和对应 UR...

大多数小伙伴可能都了解,只不过对于名词比较陌生。RBAC就是用户-菜单-权限的一套解决方案,大多数的系统权限菜单方案都是RBAC模型,

其中包括5张表:

用户表 ( sys_user ):保存用户信息

角色表 ( sys_role ):保存角色信息

权限表 ( sys_node ):保存系统资源信息。如:菜单、按钮 和对应 URL

它们的关系 :用户表与角色表是 多对多关系 ,角色表与资源表是多对多关系。

用户角色关系表(sys_user_user):用于维护用户和角色的关系

角色资源关系表(sys_access):用于维护角色与资源的关系

mysql脚本


  
  1. DROP TABLE IF EXISTS `sys_permission`;
  2. CREATE TABLE `sys_permission` (
  3. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '权限 ID',
  4. `parent_id` bigint(20) DEFAULT NULL COMMENT '父权限 ID (0为顶级菜单)',
  5. `name` varchar(64) NOT NULL COMMENT '权限名称',
  6. `code` varchar(64) DEFAULT NULL COMMENT '授权标识符',
  7. `url` varchar(255) DEFAULT NULL COMMENT '授权路径',
  8. `type` int(2) NOT NULL DEFAULT '1' COMMENT '类型(1菜单,2按钮)',
  9. `icon` varchar(200) DEFAULT NULL COMMENT '图标',
  10. `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  11. `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  12. `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  13. PRIMARY KEY (`id`)
  14. ) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 COMMENT='权限表';
  15. DROP TABLE IF EXISTS `sys_role`;
  16. CREATE TABLE `sys_role` (
  17. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色 ID',
  18. `name` varchar(64) NOT NULL COMMENT '角色名称',
  19. `remark` varchar(200) DEFAULT NULL COMMENT '角色说明',
  20. `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  21. `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  22. PRIMARY KEY (`id`)
  23. ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='角色表';
  24. DROP TABLE IF EXISTS `sys_role_permission`;
  25. CREATE TABLE `sys_role_permission` (
  26. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
  27. `role_id` bigint(20) NOT NULL COMMENT '角色 ID',
  28. `permission_id` bigint(20) NOT NULL COMMENT '权限 ID',
  29. PRIMARY KEY (`id`)
  30. ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COMMENT='角色权限表';
  31. DROP TABLE IF EXISTS `sys_user`;
  32. CREATE TABLE `sys_user` (
  33. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户 ID',
  34. `username` varchar(50) NOT NULL COMMENT '用户名',
  35. `password` varchar(64) NOT NULL COMMENT '密码,加密存储, admin/1234',
  36. `is_account_non_expired` int(2) DEFAULT '1' COMMENT '帐户是否过期(1 未过期,0已过期)',
  37. `is_account_non_locked` int(2) DEFAULT '1' COMMENT '帐户是否被锁定(1 未过期,0已过期)',
  38. `is_credentials_non_expired` int(2) DEFAULT '1' COMMENT '密码是否过期(1 未过期,0已过期)',
  39. `is_enabled` int(2) DEFAULT '1' COMMENT '帐户是否可用(1 可用,0 删除用户)',
  40. `nick_name` varchar(64) DEFAULT NULL COMMENT '昵称',
  41. `mobile` varchar(20) DEFAULT NULL COMMENT '注册手机号',
  42. `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',
  43. `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  44. `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  45. PRIMARY KEY (`id`),
  46. UNIQUE KEY `username` (`username`) USING BTREE,
  47. UNIQUE KEY `mobile` (`mobile`) USING BTREE,
  48. UNIQUE KEY `email` (`email`) USING BTREE
  49. ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='用户表';
  50. DROP TABLE IF EXISTS `sys_user_role`;
  51. CREATE TABLE `sys_user_role` (
  52. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
  53. `user_id` bigint(20) NOT NULL COMMENT '用户 ID',
  54. `role_id` bigint(20) NOT NULL COMMENT '角色 ID',
  55. PRIMARY KEY (`id`)
  56. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='用户角色表';

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/113386794

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。