五分钟带你玩转SpringSecurity(三)常见又陌生,带你了解RBAC模型
【摘要】
大多数小伙伴可能都了解,只不过对于名词比较陌生。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脚本
-
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='用户角色表';
-
文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。
原文链接:baocl.blog.csdn.net/article/details/113386794
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)