c77352877d
主要更新: 1. 统一所有微服务端口配置(19000-19008) 2. 为所有服务创建本地/测试/生产三套环境配置 3. 配置Nacos认证密码(本地:Peanut2817*#, 测试/生产:EmotionMuseum2025) 4. 优化网关路由配置,支持负载均衡和WebSocket 5. 新增emotion-websocket模块,支持实时聊天 6. 前端集成WebSocket,替代HTTP轮询 7. 添加配置验证和管理工具脚本 技术特性: - 完整的环境隔离和服务发现 - WebSocket实时通信支持 - 负载均衡路由配置 - 跨域和安全配置 - 自动重连和心跳检测
5.4 KiB
5.4 KiB
后端认证模块重构总结
重构目标
将后端登录鉴权逻辑集中到emotion-auth模块,从emotion-user模块中移除所有认证相关功能,实现职责分离。
重构内容
1. emotion-auth模块完善
新增功能
-
AuthController: 用户认证控制器
- 用户注册
/auth/register - 用户登录
/auth/login - 刷新Token
/auth/refresh - 用户登出
/auth/logout - 验证Token
/auth/validate-token - 获取用户信息
/auth/user-info - 检查账号/邮箱/手机号是否存在
- 用户注册
-
AuthService: 认证服务接口和实现
- 完整的用户认证逻辑
- JWT Token管理
- 密码加密验证
- 用户状态检查
-
User实体: 用户数据模型
- 完整的用户字段定义
- 成长数据字段
- 第三方登录支持
-
UserMapper: 用户数据访问层
- 基础CRUD操作
- 按账号/邮箱/手机号查询
- 第三方登录查询
配置文件
-
application.yml: 完整的服务配置
- 数据库连接配置
- Redis配置
- JWT配置
- 验证码配置
- OAuth配置
-
SecurityConfig: 安全配置更新
- 新增认证接口的公开访问权限
- JWT过滤器配置
2. emotion-user模块简化
移除的功能
-
认证相关Controller:
- 移除UserController中的登录、注册、登出接口
- 删除CaptchaController
- 删除OAuthController
-
认证相关Service:
- 移除UserService中的认证方法
- 删除CaptchaService及其实现
- 删除OAuthService及其实现
- 删除SliderCaptchaService及其实现
-
认证相关DTO/VO:
- 删除LoginRequest、RegisterRequest
- 删除LoginResponse
- 删除CaptchaResponse、SliderCaptchaResponse
- 删除OAuthLoginRequest等
-
认证相关Mapper方法:
- 移除UserMapper中的认证查询方法
- 简化UserMapper.xml
保留的功能
-
用户信息管理:
- 获取用户信息
- 更新用户信息
- 更新最后活跃时间
-
数据模型:
- User实体(用户基础信息)
- UserInfoResponse(用户信息响应)
- UserUpdateRequest(用户更新请求)
3. 网关路由配置
新增路由
# 认证服务路由
- id: emotion-auth
uri: lb://emotion-auth
predicates:
- Path=/api/auth/**
filters:
- StripPrefix=2
路由分配
/api/auth/**→ emotion-auth模块(认证功能)/api/user/**→ emotion-user模块(用户信息管理)
4. 前端API调用
前端认证相关API调用已配置为:
- 基础URL:
/api/auth - 通过网关自动路由到emotion-auth模块
重构后的架构
emotion-auth模块职责
- 用户注册和登录
- JWT Token生成和验证
- 密码加密和验证
- 验证码生成和验证
- 第三方OAuth登录
- 用户认证状态管理
emotion-user模块职责
- 用户基础信息管理
- 用户资料更新
- 用户活跃状态维护
- 用户成长数据管理
数据库设计
用户表结构
CREATE TABLE user (
id VARCHAR(32) PRIMARY KEY,
account VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
username VARCHAR(50),
email VARCHAR(100),
phone VARCHAR(20),
avatar VARCHAR(255),
nickname VARCHAR(50),
birth_date DATE,
location VARCHAR(100),
bio TEXT,
member_level VARCHAR(20) DEFAULT 'free',
total_days INT DEFAULT 0,
self_awareness DECIMAL(5,2) DEFAULT 50.00,
emotional_resilience DECIMAL(5,2) DEFAULT 50.00,
action_power DECIMAL(5,2) DEFAULT 50.00,
empathy DECIMAL(5,2) DEFAULT 50.00,
life_enthusiasm DECIMAL(5,2) DEFAULT 50.00,
status INT DEFAULT 1,
is_verified INT DEFAULT 0,
last_active_time DATETIME,
oauth_platform VARCHAR(20),
oauth_id VARCHAR(100),
create_by VARCHAR(32),
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(32),
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
is_deleted INT DEFAULT 0,
remarks TEXT
);
部署配置
emotion-auth服务
- 端口: 19001
- 服务名: emotion-auth
- 数据库: emotion_museum
- Redis: 用于Token存储
服务依赖
- emotion-common: 公共工具和实体
- MySQL: 用户数据存储
- Redis: Token和验证码缓存
- Nacos: 服务注册和配置管理
测试验证
创建了测试脚本 test-auth.sh 用于验证认证功能:
- 验证码生成测试
- 用户注册测试
- 用户登录测试
- Token验证测试
- 用户信息获取测试
- 用户登出测试
重构优势
- 职责分离: 认证和用户管理功能明确分离
- 可维护性: 认证逻辑集中管理,便于维护和升级
- 可扩展性: 认证模块独立,便于添加新的认证方式
- 安全性: 认证逻辑统一管理,安全策略一致
- 性能优化: 认证服务可独立扩展和优化
注意事项
- 数据一致性: 两个模块都需要访问用户表,需要保证数据一致性
- 服务通信: emotion-user模块如需用户认证信息,需通过emotion-auth模块获取
- 缓存同步: Token和用户状态缓存需要在两个模块间保持同步
- 错误处理: 统一错误码和异常处理机制
后续优化建议
- 服务间通信: 使用Feign客户端实现模块间调用
- 缓存策略: 优化Redis缓存策略,提高性能
- 监控告警: 添加认证服务的监控和告警
- 安全加固: 增强密码策略和防暴力破解机制
- 审计日志: 添加用户认证操作的审计日志