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

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


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

其中包括5张表:

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

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

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

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

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

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

image.png

mysql脚本

DROP TABLE IF EXISTS `sys_permission`;
CREATE TABLE `sys_permission` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '权限 ID',
  `parent_id` bigint(20) DEFAULT NULL COMMENT '父权限 ID (0为顶级菜单)',
  `name` varchar(64) NOT NULL COMMENT '权限名称',
  `code` varchar(64) DEFAULT NULL COMMENT '授权标识符',
  `url` varchar(255) DEFAULT NULL COMMENT '授权路径',
  `type` int(2) NOT NULL DEFAULT '1' COMMENT '类型(1菜单,2按钮)',
  `icon` varchar(200) DEFAULT NULL COMMENT '图标',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 COMMENT='权限表';
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色 ID',
  `name` varchar(64) NOT NULL COMMENT '角色名称',
  `remark` varchar(200) DEFAULT NULL COMMENT '角色说明',
  `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='角色表';
DROP TABLE IF EXISTS `sys_role_permission`;
CREATE TABLE `sys_role_permission` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
  `role_id` bigint(20) NOT NULL COMMENT '角色 ID',
  `permission_id` bigint(20) NOT NULL COMMENT '权限 ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COMMENT='角色权限表';
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户 ID',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(64) NOT NULL COMMENT '密码,加密存储, admin/1234',
  `is_account_non_expired` int(2) DEFAULT '1' COMMENT '帐户是否过期(1 未过期,0已过期)',
  `is_account_non_locked` int(2) DEFAULT '1' COMMENT '帐户是否被锁定(1 未过期,0已过期)',
  `is_credentials_non_expired` int(2) DEFAULT '1' COMMENT '密码是否过期(1 未过期,0已过期)',
  `is_enabled` int(2) DEFAULT '1' COMMENT '帐户是否可用(1 可用,0 删除用户)',
  `nick_name` varchar(64) DEFAULT NULL COMMENT '昵称',
  `mobile` varchar(20) DEFAULT NULL COMMENT '注册手机号',
  `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',
  `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`) USING BTREE,
  UNIQUE KEY `mobile` (`mobile`) USING BTREE,
  UNIQUE KEY `email` (`email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='用户表';
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
  `user_id` bigint(20) NOT NULL COMMENT '用户 ID',
  `role_id` bigint(20) NOT NULL COMMENT '角色 ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='用户角色表';


相关文章
|
7月前
|
安全 网络协议 Java
技术好文:SpringBoot学习(五)RSocket和Security
技术好文:SpringBoot学习(五)RSocket和Security
|
7月前
|
安全 Java 数据安全/隐私保护
用Spring Security快速实现 RBAC模型案例
RBAC模型是一种常见的权限管理机制,它将权限赋予角色而非用户,用户通过角色获取权限。主要组件包括用户、角色、权限、会话、角色分配和权限分配。RBAC简化了权限管理,方便权限变更,常用于大型组织。
221 0
|
SQL Java 数据库
微服务技术系列教程(39)- SpringBoot -RBAC权限模型
微服务技术系列教程(39)- SpringBoot -RBAC权限模型
262 0
|
安全 Java 数据库
SpringSecurity安全框架(课时二十一)
SpringSecurity安全框架(课时二十一)
101 0
|
JSON 安全 Java
Spring Security + JWT 实现一个权限系统,写的太好了吧!(4)
Spring Security + JWT 实现一个权限系统,写的太好了吧!
189 0
Spring Security + JWT 实现一个权限系统,写的太好了吧!(4)
|
安全 Java 数据安全/隐私保护
Spring Security + JWT 实现一个权限系统,写的太好了吧!(2)
Spring Security + JWT 实现一个权限系统,写的太好了吧!(2)
Spring Security + JWT 实现一个权限系统,写的太好了吧!(2)
|
安全 Java Spring
Spring Security + JWT 实现一个权限系统,写的太好了吧!(3)
Spring Security + JWT 实现一个权限系统,写的太好了吧!
144 0
Spring Security + JWT 实现一个权限系统,写的太好了吧!(3)
|
安全 Java 数据安全/隐私保护
Spring Security + JWT 实现一个权限系统,写的太好了吧!(1)
Spring Security + JWT 实现一个权限系统,写的太好了吧!
135 0
Spring Security + JWT 实现一个权限系统,写的太好了吧!(1)
|
安全 Java Spring
Demo:第三章:权限框架spring security oauth2
Demo:第三章:权限框架spring security oauth2
133 0
Demo:第三章:权限框架spring security oauth2
|
安全 Java 开发者
从一手资料学习--Spring Security与OAuth(一)
不知道大家对于上面的几个问题被问及的时候会心里发慌。强哥发现,大多数小伙伴对于一些工作中使用较少的知识,或者说是平常都在用,但是不需要自己去实现的知识,主动学习的积极性都比较低。
从一手资料学习--Spring Security与OAuth(一)