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

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

Laughing
2020-10-11 / 0 评论 / 1,646 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年03月18日,已超过306天没有更新,若内容或图片失效,请留言反馈。

超详细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;

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

0

评论 (0)

取消
  1. 头像
    夏日博客
    Windows 7 · Google Chrome

    基本上都是html.

    回复