Files
happy-life-star/backend/认证模块重构总结.md
T
peanut c77352877d feat: 完成Nacos配置优化和WebSocket集成
主要更新:
1. 统一所有微服务端口配置(19000-19008)
2. 为所有服务创建本地/测试/生产三套环境配置
3. 配置Nacos认证密码(本地:Peanut2817*#, 测试/生产:EmotionMuseum2025)
4. 优化网关路由配置,支持负载均衡和WebSocket
5. 新增emotion-websocket模块,支持实时聊天
6. 前端集成WebSocket,替代HTTP轮询
7. 添加配置验证和管理工具脚本

技术特性:
- 完整的环境隔离和服务发现
- WebSocket实时通信支持
- 负载均衡路由配置
- 跨域和安全配置
- 自动重连和心跳检测
2025-07-17 18:10:45 +08:00

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验证测试
  • 用户信息获取测试
  • 用户登出测试

重构优势

  1. 职责分离: 认证和用户管理功能明确分离
  2. 可维护性: 认证逻辑集中管理,便于维护和升级
  3. 可扩展性: 认证模块独立,便于添加新的认证方式
  4. 安全性: 认证逻辑统一管理,安全策略一致
  5. 性能优化: 认证服务可独立扩展和优化

注意事项

  1. 数据一致性: 两个模块都需要访问用户表,需要保证数据一致性
  2. 服务通信: emotion-user模块如需用户认证信息,需通过emotion-auth模块获取
  3. 缓存同步: Token和用户状态缓存需要在两个模块间保持同步
  4. 错误处理: 统一错误码和异常处理机制

后续优化建议

  1. 服务间通信: 使用Feign客户端实现模块间调用
  2. 缓存策略: 优化Redis缓存策略,提高性能
  3. 监控告警: 添加认证服务的监控和告警
  4. 安全加固: 增强密码策略和防暴力破解机制
  5. 审计日志: 添加用户认证操作的审计日志