TypechoJoeTheme

香草物语

统计
登录
用户名
密码
/
注册
用户名
邮箱
输入密码
确认密码

超详细Vue+Spring Boot整合Shiro前后端分离架构-Shiro表结构设计(二)

Laughing博主
2020-10-11
/
0 评论
/
1,523 阅读
/
323 个字
/
百度已收录
10/11
本文最后更新于2024年03月18日,已超过186天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

超详细Vue+Spring Boot整合Shiro前后端分离架构-Shiro介绍(一)一文中,我们介绍了Shiro的基本概念,本章开始,我们进入Shiro的实现环节。

Shiro实战

shiro实战内容包括三个部分:(1)shiro后台表结构,用于存储shiro对应的用户、角色、权限及关联关系。(2)后端代码,及基于shiro配置用户、角色、权限及对应关系以及登录、认证。(3)前端代码,维护shiro信息及登录、认证。

这篇博文,我们讲解第一部分,及Shiro的表结构设计。

表结构设计

我这里设计了5张表,分别为Shiro_User,Shiro_Role,Shiro_Permission,Shiro_User_Role,Shiro_Role_Permission。

Shiro_User

Shiro_User用于存储用户信息,主要涉及字段为用户Id(id)、用户名称(username)及用户密码(password)。shiro由提供的密码加密方式,所以,我们数据库存储的密文为调用shiro加密后的用户密码。

CREATE TABLE `Shiro_User` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `userCode` varchar(255) NOT NULL,
  `userName` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `id` (`id`) USING BTREE,
  UNIQUE KEY `code` (`userCode`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Shiro_Role

Shiro_Role用于存储角色,如系统管理员、业务人员等信息。一个用户拥有多个角色,一个角色也可以属于多个用户。

CREATE TABLE `Shiro_Role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `roleCode` varchar(255) NOT NULL,
  `roleName` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `id` (`id`) USING BTREE,
  UNIQUE KEY `roleCode` (`roleCode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Shiro_Permission

Shiro_Permission用于存储权限,一个角色可能有多个权限,一个权限也可能隶属于多个角色。

CREATE TABLE `Shiro_Permission` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `permissionCode` varchar(255) NOT NULL,
  `permissionName` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `id` (`id`) USING BTREE,
  UNIQUE KEY `permissionCode` (`permissionCode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Shiro_User_Role

Shiro_User_Role用于存储用户与角色的关联关系。

CREATE TABLE `Shiro_User_Role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `userId` bigint(20) NOT NULL,
  `roleId` bigint(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `userId` (`userId`),
  KEY `roleId` (`roleId`),
  CONSTRAINT `shiro_user_role_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `Shiro_User` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
  CONSTRAINT `shiro_user_role_ibfk_2` FOREIGN KEY (`roleId`) REFERENCES `Shiro_Role` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Shiro_Role_Permission

Shiro_Role_Permission存储角色与权限的关联关系。

CREATE TABLE `Shiro_Role_Permission` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `roleId` bigint(20) NOT NULL,
  `permissionId` bigint(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `roleId` (`roleId`),
  KEY `permissionId` (`permissionId`),
  CONSTRAINT `shiro_role_permission_ibfk_1` FOREIGN KEY (`roleId`) REFERENCES `Shiro_Role` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
  CONSTRAINT `shiro_role_permission_ibfk_2` FOREIGN KEY (`permissionId`) REFERENCES `Shiro_Permission` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

至此,数据库表结构已经设计完成。

Spring Bootshiro
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
评论 (0)
  1. 夏日博客 闲逛
    Windows 7 · Google Chrome

    基本上都是html.

    2017-11-14 回复