Files
apes-Authon-Server/README.md
T
figmar 93e13653ab Phase 1-3 完成:apes-commons 内联 + 包名重构 + 编译验证
Phase 1: apes-commons 内联
- 反推并实现 7 个核心类(Res/AuthContext/Login/LoginUser/LoginCustomer/UserSession/DbEntity)
- 新增 LoginAspect AOP 切面(从 Redis 读取会话写入 AuthContext)
- 移除外部 JAR 依赖,项目自包含可独立编译

Phase 2: 包名重构
- cn.apes.cloud → cn.apes.authon 全局包名重构
- @MapperScan 路径更新
- 零 cn.apes.cloud 残留

Phase 3: 编译验证
- maven-compiler-plugin 升级至 3.13.0(兼容 Java 24)
- Lombok 升级至 1.18.40(兼容 Java 24)
- 移除 syncAllTenantsToHuoban(伙伴云同步,非账权核心)
- 新增 IpLocationService 接口 + 桩实现
- 124 个源文件编译通过(BUILD SUCCESS)
2026-08-09 08:40:36 +08:00

172 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# apes-Authon — 账权独立服务
> 从 saas-service(账权平台)提取的纯净认证/授权/用户/角色/权限/多租户体系
> **已通过编译验证**,可作为独立微服务运行
## 项目背景
本项目源自 `saas-service`(账权平台)单体应用,经过耦合度分析确认账权模块与业务模块零直接 Service 调用,具备独立服务化条件。本仓库是提取后的纯净账权代码,不包含任何业务逻辑(溯源、称重、水肥、巡检、维修、农大同步等)。
### 提取依据
- AuthContext 被 52 个文件 / 111 处引用,但业务 Service → 账权 Service 直接调用为 **0 个**
- 账权模块仅通过 ThreadLocalAuthContext)与业务模块间接耦合
- 新增业务模块(如巡检、维修)均不直接调用账权 Service,验证了独立服务化的可行性
## 技术栈
| 组件 | 版本 | 用途 |
|------|------|------|
| Spring Boot | 2.2.1.RELEASE | Web 框架 |
| Java | 11 | 运行时 |
| MyBatis Plus | 3.5.7 | ORM |
| dynamic-datasource | 3.6.1 | 多租户数据源切换 |
| Redisson | 3.35.0 | Redis 客户端 / 分布式锁 |
| Hutool | 5.8.16 | 通用工具 |
| Lombok | 1.18.40 | 代码简化 |
## 代码结构
```
src/main/java/cn/apes/
├── AuthonApplication.java # 主启动类
├── commons/ # apes-commons 内联实现(原外部 JAR
│ ├── Res.java # 统一 API 响应封装
│ ├── auth/
│ │ ├── AuthContext.java # ThreadLocal 认证上下文
│ │ ├── Login.java # @Login 注解
│ │ ├── LoginAspect.java # 登录认证 AOP 切面
│ │ ├── LoginUser.java # 登录用户信息
│ │ ├── LoginCustomer.java # 登录客户/企业信息
│ │ └── UserSession.java # 会话对象
│ └── domain/
│ └── DbEntity.java # 基础实体(id/createTime/updateTime/isDel
└── authon/ # 账权业务代码
├── controller/ # 11 个 Controller
│ ├── UserController.java # 用户认证(登录/注册/改密/多企业切换)
│ ├── PermissionController.java # 权限管理(菜单/权限码/角色/成员角色)
│ ├── AccessTokenController.java # 外部 API Token 管理
│ ├── CustomerController.java # 客户/企业管理
│ ├── CustomerPackageController.java # 客户套餐管理
│ ├── AppController.java # 应用管理
│ ├── SysOrganizationController.java # 组织架构
│ ├── SysPackagePlanController.java # 套餐方案
│ ├── SysQuotaController.java # 配额模板
│ ├── SysOperationLogController.java # 操作日志
│ └── UserPreferenceController.java # 用户偏好
├── domain/
│ ├── entity/ # 23 个实体类
│ ├── dto/ # 12 个 DTO(含公共 PageDTO
│ ├── vo/ # 3 个 VO
│ └── huoban/ # 11 个伙伴云 API 模型(SSO 依赖)
├── service/ # 7 个 Service 接口
│ └── impl/ # 18 个 Service 实现
├── mapper/ # 23 个 Mapper
├── config/ # 5 个配置类
│ ├── AccessTokenFilterConfig.java # Token 过滤器注册
│ ├── DataSourceHeaderAspect.java # 多租户数据源 AOP 切面
│ ├── TenantSource.java # @TenantSource 注解
│ ├── HbTokenContext.java # 伙伴云 Token ThreadLocal
│ └── SiteConfig.java # 站点配置
├── filter/
│ └── AccessTokenFilter.java # 外部 API 鉴权过滤器
└── util/
├── OperationLogUtil.java # 操作日志工具
└── RsaUtil.java # RSA 加解密工具
```
## apes-commons 内联说明
`apes-commons 0.0.7-SNAPSHOT` 外部 JAR 已内联为 `cn.apes.commons` 包,共 8 个类:
| 类 | 说明 |
|----|------|
| `Res` | 统一 API 响应包装(success/fail/error/get |
| `AuthContext` | ThreadLocal 认证上下文,存储 UserSession |
| `UserSession` | 会话对象(LoginUser + LoginCustomer + token |
| `LoginUser` | 登录用户信息(id/nickName/phone/portrait/email |
| `LoginCustomer` | 登录客户/企业信息(id/customerName/customerType... |
| `@Login` | 方法/类级注解,AOP 自动注入登录信息 |
| `LoginAspect` | 登录认证 AOP 切面(从 Redis 读取会话 → 写入 AuthContext |
| `DbEntity` | 基础实体(id / createTime / updateTime / isDel |
**LoginAspect 工作流程**
1. 拦截 `@Login` 注解的 Controller 类/方法
2. 从请求头读取 `token`
3. 查 Redis 获取用户信息(key=token)和客户信息(key=token:customer
4. 组装 `UserSession` 写入 `AuthContext` ThreadLocal
5. 业务方法执行完毕后清理 `AuthContext`
## 已完成的阶段
### Phase 1: apes-commons 内联 ✅
- 反推 7 个核心类接口(AuthContext/Login/LoginUser/LoginCustomer/UserSession/Res/DbEntity
- 实现 LoginAspect AOP 切面(原在外部 JAR 中)
- 移除外部 JAR 依赖,pom.xml 无需手动安装
### Phase 2: 包名重构 ✅
- `cn.apes.cloud``cn.apes.authon` 全局包名重构
- `@MapperScan` 路径更新
- application.yml 配置更新
-`cn.apes.cloud` 残留
### Phase 3: 编译验证 ✅
- maven-compiler-plugin 升级至 3.13.0(兼容 Java 24
- Lombok 升级至 1.18.40(兼容 Java 24
- 移除 `syncAllTenantsToHuoban()` 伙伴云同步(业务集成,非账权核心)
- 创建 `IpLocationService` 接口 + 桩实现
- **124 个源文件编译通过**
## 待完成事项
### Phase 4: SDK 化
- [ ]`AuthContext` 改造为可远程调用的 SDK
- [ ] 提供 `authon-sdk` 模块供业务系统引用
- [ ] Token 校验改为 HTTP API 调用
### Phase 5: 网关集成
- [ ] 接入 API 网关(Spring Cloud Gateway / Nginx
- [ ] 请求头注入认证信息(替代 ThreadLocal
- [ ] 多租户数据源改为网关路由模式
## 从原项目提取的文件清单
**124 个 Java 文件**(含 8 个内联 commons 类 + 2 个新增桩实现):
| 类型 | 数量 |
|------|------|
| Controller | 11 |
| Entity | 23 |
| DTO | 12 |
| VO | 3 |
| Service 接口 | 7 |
| Service 实现 | 18 |
| Mapper | 23 |
| Config | 5 |
| Filter | 1 |
| Util | 2 |
| Huoban DTO | 11 |
| commons 内联 | 8 |
| 主启动类 | 1 |
## 编译方式
```bash
# 直接编译(无需安装外部 JAR
mvn clean compile
# 打包
mvn clean package -DskipTests
# 运行
java -jar target/apes-authon.jar
```
服务默认端口 `8090`context-path `/authon`
## 关联仓库
- 源仓库:[apes-Authdata](https://gitea.apescale.com/figmar/apes-Authdata) — 完整单体应用(含业务代码)
- 方案文档:`docs/账权模块独立服务化方案.html`(在 apes-Authdata 仓库中)
- 源码对比:`docs/源码版本对比分析-20260809.md`(在 apes-Authdata 仓库中)