当前位置: 首页 > article >正文

后台管理系统的通用权限解决方案(十二)数据模型、基于SpringCloud和Nacos的后端项目搭建

后台管理系统的通用权限解决方案(一)如何自定义一个starter?
后台管理系统的通用权限解决方案(二)SpringBoot整合Swagger Springfox实现接口日志文档
后台管理系统的通用权限解决方案(三)SpringBoot整合Knife4j生成接口文档
后台管理系统的通用权限解决方案(四)SpringBoot整合Dozer实现对象属性复制
后台管理系统的通用权限解决方案(五)SpringBoot整合hibernate-validator实现表单校验
后台管理系统的通用权限解决方案(六)SpringBoot整合Logback实现日志记录
后台管理系统的通用权限解决方案(七)SpringBoot整合SpringEvent实现操作日志记录(基于注解和切面实现)
后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用
后台管理系统的通用权限解决方案(九)后台管理系统的通用权限解决方案(九)SpringBoot整合jjwt实现登录认证鉴权
后台管理系统的通用权限解决方案(十)如何自定义SpringMVC的参数解析器
后台管理系统的通用权限解决方案(十一)SpringBoot的统一异常处理

经过前面11个小节的学习,终于把通用权限系统涉及的技术学习完了。现在,就可以真正开始系统的开发了。

1 数据模型

本系统采用的权限数据模型是在经典的RBAC权限数据模型的基础之上进行改进的,共涉及到如下11张表:

t_auth_menu---------------菜单表
t_auth_resource-----------资源表
t_auth_role---------------角色表
t_auth_user---------------用户表
t_core_station------------岗位表
t_core_org----------------组织表
t_auth_user_role----------用户角色关系表
t_auth_role_org-----------角色组织关系表
t_auth_role_authority-----角色权限关系表
t_auth_login_log----------用户登录日志表
t_auth_opt_log------------用户操作日志表

需要说明的是菜单和资源其实都属于权限,是两种不同类型的权限,即菜单权限和资源权限。具体说明如下:

  • 菜单权限:对应的是系统的菜单,不同的用户可能拥有不同的菜单权限,这样登录系统后看到的菜单也不同
  • 资源权限:对应的是某个功能的访问接口,拥有权限则可以访问此接口,没有权限则禁止访问此接口

1.1 数据库auth_proj

create database auth_proj;
use auth_proj;

1.2 菜单表t_auth_menu

字段名类型说明
idbigint主键
namevarchar菜单名称
describe_varchar功能描述
is_publicbit是否是公开菜单
pathvarchar对应路由path
componentvarchar对应路由组件component
is_enablebit是否启用
sort_valueint排序
iconvarchar菜单图标
group_varchar菜单分组
parent_idbigint父级菜单id
create_userbigint创建人id
create_timedatetime创建时间
update_userbigint更新人id
update_timedatetime更新时间

1.3 资源表t_auth_resource

字段名类型说明
idbigint主键
codevarchar资源编码
namevarchar接口名称
menu_idbigint菜单ID
methodvarcharHTTP请求方式
urlvarchar接口请求url
describe_varchar接口描述
create_userbigint创建人id
create_timedatetime创建时间
update_userbigint更新人id
update_timedatetime更新时间

1.4 角色表t_auth_role

字段名称类型说明
idbigint主键
namevarchar角色名称
codevarchar角色编码
describe_varchar角色描述
statusbit是否启用状态
readonlybit是否内置角色
create_userbigint创建人id
create_timedatetime创建时间
update_userbigint更新人id
update_timedatetime更新时间

1.5 用户表t_auth_user

字段名类型说明
idbigint主键
accountvarchar账号
namevarchar姓名
org_idbigint组织ID
station_idbigint岗位ID
emailvarchar邮箱
mobilevarchar手机号
sexvarchar性别
statusbit启用状态
avatarvarchar头像
work_describevarchar工作描述
password_error_last_timedatetime最后一次输错密码时间
password_error_numint密码错误次数
password_expire_timedatetime密码过期时间
passwordvarchar密码
last_login_timedatetime最后登录时间
create_userbigint创建人id
create_timedatetime创建时间
update_userbigint更新人id
update_timedatetime更新时间

wqeeeeeee1.6 岗位表t_auth_station

字段名称类型说明
idbigint主键
namevarchar岗位名称
org_idbigint组织ID
statusbit是否启用状态
describe_varchar描述
create_timedatetime创建时间
create_userbigint创建人ID
update_timedatetime更新时间
update_userbigint更新人ID

1.7 组织表t_auth_org

字段名称类型说明
idbigint主键
namevarchar组织名称
abbreviationvarchar简称
parent_idbigint父ID
tree_pathvarchar树结构
sort_valueint排序
statusbit状态
describe_varchar描述
create_timedatetime创建时间
create_userbigint创建人ID
update_timedatetime更新时间
update_userbigint更新人ID

1.8 用户角色关系表t_auth_user_role

字段名称类型说明
idbigint主键
role_idbigint角色ID
user_idbigint用户ID
create_userbigint创建人ID
create_timedatetime创建时间

1.9 角色组织关系表t_auth_role_org

字段名称类型说明
idbigint主键
role_idbigint角色ID
org_idbigint组织ID
create_timedatetime创建时间
create_userbigint创建人ID

1.10 角色权限关系表t_auth_role_authority

字段名称类型说明
idbigint主键
authority_idbigint权限ID
authority_typevarchar权限类型 MENU:菜单 RESOURCE:资源
role_idbigint角色ID
create_timedatetime创建时间
create_userbigint创建人ID

1.11 用户登录日志表t_auth_login_log

字段名类型说明
idbigint主键
request_ipvarchar操作IP
user_idbigint登录人ID
user_namevarchar登录人姓名
accountvarchar登录人账号
descriptionvarchar登录描述
login_datedate登录时间
uavarchar浏览器请求头
browservarchar浏览器名称
browser_versionvarchar浏览器版本
operating_systemvarchar操作系统
locationvarchar登录地点
create_timedatetime创建时间
create_userbigint创建人ID

1.12 用户操作日志表t_auth_opt_log

字段名类型说明
idbigint主键
request_ipvarchar操作IP
typevarchar日志类型 OPT:操作类型 EX:异常类型
user_namevarchar操作人
descriptionvarchar操作描述
class_pathvarchar类路径
action_methodvarchar请求方法
request_urivarchar请求地址
http_methodvarchar请求类型 GET;POST;PUT;DELETE;PATCH;TRACE;HEAD;OPTIONS
paramslongtext请求参数
resultlongtext返回值
ex_desclongtext异常详情信息
ex_detaillongtext异常描述
start_timetimestamp开始时间
finish_timetimestamp完成时间
consuming_timebigint消耗时间
uavarchar浏览器请求头
create_timedatetime创建时间
create_userbigint创建人ID

2 后端项目搭建

本项目以SpringCloud微服务的架构进行开发,使用Nacos作为服务注册中心,使用Feign实现远程调用。

2.1 生成代码

使用IDEA插件:MybatisPlus,根据数据库表结构生成基本代码,详见MyBatisPlus详解(三)lambdaQuery、lambdaUpdate、批量新增、代码生成、Db静态工具、逻辑删除

代码生成后,根据需要移动到不同包下,如图:

  • 实体类

  • Controller、Service、Mapper

2.2 安装Nacos

安装Nacos的步骤详见:SpringCloud学习笔记(二)Ribbon负载均衡、Nacos注册中心、Nacos与Eureka的区别

安装并启动Nacos后,为该项目创建命名空间:

2.3 编写配置文件

auth-serviceresources目录下,创建配置文件如下:

  • application.yml
spring:
  profiles:
    active: dev
  application:
    name: auth-service
  • application-dev.yml
server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/auth_proj?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        namespace: ac4a8b85-577a-4765-81a9-b88b7b86595d

mybatis-plus:
  type-aliases-package: com.itweid.common.entity
  mapper-locations: classpath*:/mapper/**/*.xml
  configuration:
    default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler

2.4 启动项目

auth-service创建启动类:

package com.itweid.auth;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author: itweid
 * @since: 2024-10-30 17:08:45
 */
@SpringBootApplication
public class AuthServiceApp {
    public static void main(String[] args) {
        SpringApplication.run(AuthServiceApp.class, args);
    }
}

启动项目,可以在Nacos中看到已经注册的服务:

至此,后端项目搭建完成,后续慢慢将前面所学的技术添加到项目中,并实现权限管理的功能。

本节完,更多内容查阅:后台管理系统的通用权限解决方案


http://www.kler.cn/a/381486.html

相关文章:

  • 给 Docker 配置网络代理
  • Unity中实现伤害飘字或者提示飘字效果(DoTween实现版本)
  • Python学习笔记-生成器的应用与原理
  • CodeQL学习笔记(5)-CodeQL for Java(AST、元数据、调用图)
  • C语言扫雷小游戏
  • 帆软报表新增一行数据后保存,删除选中数据
  • Python数据分析NumPy和pandas(二十三、数据清洗与预处理之五:pandas的分类类型数据)
  • java 中List 的使用
  • Vue:事件
  • MATLAB下的四个模型的IMM例程(CV、CT左转、CT右转、CA四个模型),附下载链接
  • 根据某个字段禁用el-table里的checkbox
  • 纯前端实现在线预览excel文件(插件: LuckyExcel、Luckysheet)
  • 洛谷月赛 11.1题解
  • Android 15 在状态栏时间中显示秒数
  • 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来
  • oracle如何创建两个数据库,以及如何用navicat连接,监听、数据泵
  • 定位new的表达式
  • 数据结构和算法入门
  • 【ORACLE】对Oracle中char类型的研究分析
  • 歌者PPT又添新功能——AI无损排版上线!
  • linux最近常用命令3
  • redis源码系列--(二)--multi/exec/eval命令执行流程
  • 数据库基础(4) . 数据库结构
  • 健康生活的重要性,注重规律作息
  • 打响反对人工智能的第一枪
  • 安装Element-Plus与v-model在vue3组件中的使用