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

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

时间:2024-11-02 18:44:58浏览次数:6  
标签:SpringCloud create Nacos auth timedatetime idbigint userbigint 权限 数据模型

后台管理系统的通用权限解决方案(一)如何自定义一个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中看到已经注册的服务:

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

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

标签:SpringCloud,create,Nacos,auth,timedatetime,idbigint,userbigint,权限,数据模型
From: https://blog.csdn.net/weixin_42739799/article/details/143439597

相关文章

  • SpringCloud-课程安排
    基础篇d1--服务拆分+Eureka+Ribbon+Nacosd2--Nacos配置管理+Feign+Gateway网关d3--Docker+自定义镜像+dockerComposed4--MQ+RabbitMQ+SpringAMQPd5--ES+IK分词器+操作索引库+文档操作+RestClientd6--DSL查询+搜索结果处理+RestClient+查询文档+旅游实战案......
  • docker容器安装nacos详解
    ‌Nacos的核心功能‌Nacos是一个动态服务发现、配置管理和服务管理平台,旨在帮助构建云原生应用。它支持服务注册与发现、配置管理、‌服务健康监测等功能,适用于微服务和云原生架构。Nacos提供了友好的‌Web界面和‌API接口,方便用户进行配置管理、服务注册和发现等操作。1.打......
  • 数据模型和数据库之间的关系是什么
    文章开头段落:数据模型和数据库之间存在着密切的关系,具体表现在以下几个方面:定义结构、约束行为、规范操作、指导设计。其中,数据模型为数据库提供了结构化的框架,制定了数据存储的蓝图和方法,使得数据可以被高效地存储、检索和维护。定义结构是数据模型的核心任务之一,其影响力贯穿......
  • 以学校数据模型为例,掌握在DAS下使用GaussDB
    @目录题目具体操作一、表的创建二、表数据的插入三、数据查询目的:这里以学校数据库模型为例,介绍GaussDB数据库、表等常见操作,以及SQL语法使用的介绍。题目假设A市B学校为了加强对学校的管理,引入了华为GaussDB数据库。在B学校里,主要涉及的对象有学生、教师、班级、院系和课程......
  • springcloud分布式微服务 java高速公路收费管理系统
    目录课题介绍具体实现截图开发核心技术:开发工具开发技术SpringCloudEureka详细视频演示核心代码部分展示系统设计需求分析可行性论证源码获取课题介绍根据高速公路收费管理系统的系统分析结果,整个系统包括以下各个单元:管理员,用户,收费站,交通流量,车道信息,通知通知公......
  • 微服务分布式springcloud高校竞赛活动报名管理系统
    目录课题介绍具体实现截图开发核心技术:开发工具开发技术SpringCloudEureka详细视频演示核心代码部分展示系统设计需求分析可行性论证源码获取课题介绍与高校竞赛活动报名管理系统管理者及学生交流后经过详细缜密的思考,再讨论研究后得出的初步系统开发所需实现功能......
  • SpringCloud Alibaba 06 (配置中心 Nacos Config)
    目录了解微服务常用的概念了解项目架构演变掌握微服务环境搭建掌握微服务治理组件-NacosDiscovery掌握微服务负载均衡调度组件-Ribbon掌握微服务远程调度组件-Feign掌握微服务流控容错组件-Sentinel掌握微服务网关组件-Gateway掌握微服务链路追踪组件-Sleuth&Zipkin掌握......
  • SpringCloud Alibaba 01 (微服务的概念理解,微服务的环境搭建,微服务的服务注册中心Nacos
    目录了解微服务常用的概念了解项目架构演变掌握微服务环境搭建掌握微服务治理组件-NacosDiscovery掌握微服务负载均衡调度组件-Ribbon掌握微服务远程调度组件-Feign掌握微服务流控容错组件-Sentinel掌握微服务网关组件-Gateway掌握微服务链路追踪组件-Sleuth&Zi......
  • 【深入理解SpringCloud微服务】Hystrix作用与原理剖析
    【深入理解SpringCloud微服务】Hystrix作用与原理剖析Hystrix的作用熔断降级隔离Hystrix有限流的功能吗?Hystrix的原理@HystrixCommand注解是如何起作用的工作流程1、构建命令对象2、执行命令3、检查缓存是否开启并且是否命中4、检查断路器是否打开5、检查线程池或信号量......
  • 计量经济学(十四)——面板数据模型的固定效应和随机效应
    面板数据模型是一类常见于经济学、社会科学等领域的计量经济模型,广泛用于分析具有时间维度和个体维度的多维数据。相比于传统的横截面数据模型或时间序列模型,面板数据模型能够更好地处理个体之间的异质性问题,并且提高模型的估计精度。通过对同一组个体(如公司、国家或个人)在不同时......