Skip to content

Latest commit

 

History

History
153 lines (106 loc) · 3.49 KB

File metadata and controls

153 lines (106 loc) · 3.49 KB

Admin Server

这是给当前 vue-vben-admin 前端配套的企业级 Spring Boot 后端项目。

Java 容器部署

复用服务器已有 MySQL、Redis、MinIO 时,使用 deploy/README.md 中的部署步骤。 deploy/docker-compose.yml 只启动 Java 后端;项目根目录的 docker-compose.yml 是另建配套服务的配置。

技术栈

  • Java 21
  • Spring Boot 3
  • Spring Security
  • JWT
  • Redis
  • MySQL
  • MyBatis-Plus
  • MinIO
  • Flyway
  • Knife4j / OpenAPI
  • EasyExcel

已对接的主要接口

这些接口已经按当前前端请求习惯做了适配:

  • POST /api/auth/login
  • POST /api/auth/refresh
  • POST /api/auth/logout
  • GET /api/user/info
  • GET /api/menu/all
  • GET /api/system/user/list
  • GET /api/system/role/list
  • GET /api/system/menu/list
  • POST /api/system/file/upload

大部分接口统一返回:

{
  "code": 200,
  "message": "操作成功",
  "data": {}
}

/api/auth/refresh 目前故意返回纯字符串 token,因为当前前端刷新 token 的拦截器就是按这个格式接收的。

开发环境配置

开发环境配置文件是:

src/main/resources/application-dev.yml

当前已经写死为:

  • MySQL:192.168.137.10:3306/vbenAdmin
  • MySQL 用户名:admin
  • MySQL 密码:abc123
  • Redis:192.168.137.10:6379
  • MinIO:http://192.168.137.10:9000

数据库表对应关系

Java 后端现在对齐旧 node-admin/database/init.sql 的表结构:

  • 用户表:users
  • 角色表:roles
  • 权限表:permissions
  • 菜单表:menus
  • 用户角色关联表:user_roles
  • 角色权限关联表:role_permissions

密码字段使用旧库的 password_hash,算法是:

SHA-256("vbenAdmin:" + 明文密码)

前端接口参数也按当前 vue-vben-admin/src/api 对齐:

  • 登录参数:usernamepassword
  • 用户角色参数:roleIds / roles
  • 角色权限参数:permissions,这里传的是菜单 ID 列表
  • 菜单父级参数:parentId / pid
  • 菜单权限参数:permissionCode / authCode

数据库权限说明

如果启动时报:

Access denied for user 'admin'@'192.168.137.1' (using password: YES)

这不是 Java 代码问题,而是 MySQL 拒绝了 admin 用户从 192.168.137.1 这台机器连接数据库。

可以在 MySQL 服务器上用 root 或管理员账号执行:

CREATE DATABASE IF NOT EXISTS `vbenAdmin` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE USER IF NOT EXISTS 'admin'@'%' IDENTIFIED BY 'abc123';
CREATE USER IF NOT EXISTS 'admin'@'192.168.137.1' IDENTIFIED BY 'abc123';

ALTER USER 'admin'@'%' IDENTIFIED BY 'abc123';
ALTER USER 'admin'@'192.168.137.1' IDENTIFIED BY 'abc123';

GRANT ALL PRIVILEGES ON `vbenAdmin`.* TO 'admin'@'%';
GRANT ALL PRIVILEGES ON `vbenAdmin`.* TO 'admin'@'192.168.137.1';

FLUSH PRIVILEGES;

也可以直接执行项目里的 SQL 文件:

docs/mysql-permission.sql

启动项目

mvn spring-boot:run

首次启动时,如果旧库的用户、角色、菜单表是空的,系统会自动初始化旧后端同款管理员账号:

admin / 123456

前端代理

当前前端原来可能代理到 http://localhost:3000/api

换成这个 Java 后端后,代理目标改成:

http://localhost:8080/api

保留原来的 /api 重写规则即可。

接口文档

项目启动后可以打开:

  • http://localhost:8080/api/doc.html
  • http://localhost:8080/api/swagger-ui/index.html