Files
HAOVP/docs/video-auth模块目录架构、功能及接口文档.md
T

8.0 KiB
Raw Blame History

video-auth模块目录架构、功能及接口文档

一、目录架构

video-auth/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/nuaa/video/auth/
│   │   │       ├── config/              # 配置类
|   |   |       │   ├── RedisConfig.java       # Redis配置
│   │   │       │   └── SecurityConfig.java    # 安全配置
│   │   │       ├── controller/          # 控制器
│   │   │       │   └── AuthController.java    # 认证控制器
│   │   │       ├── dto/                 # 数据传输对象
│   │   │       │   ├── LoginDTO.java         # 登录请求DTO
│   │   │       │   ├── RegisterDTO.java      # 注册请求DTO
│   │   │       │   └── TokenInfoDTO.java     # 令牌信息DTO
│   │   │       ├── entity/              # 实体类
│   │   │       │   ├── AuthUser.java         # 用户实体
│   │   │       │   ├── AuthRole.java         # 角色实体
│   │   │       │   ├── AuthPermission.java   # 权限实体
│   │   │       │   ├── AuthUserRole.java     # 用户角色关联实体
│   │   │       │   └── AuthRolePermission.java # 角色权限关联实体
│   │   │       ├── filter/              # 过滤器
│   │   │       │   └── JwtAuthenticationFilter.java # JWT认证过滤器
│   │   │       ├── mapper/              # MyBatis映射接口
│   │   │       │   ├── AuthUserMapper.java       # 用户Mapper
│   │   │       │   ├── AuthRoleMapper.java       # 角色Mapper
│   │   │       │   ├── AuthPermissionMapper.java # 权限Mapper
│   │   │       │   ├── AuthUserRoleMapper.java   # 用户角色Mapper
│   │   │       │   └── AuthRolePermissionMapper.java # 角色权限Mapper
│   │   │       ├── service/             # 服务层
│   │   │       │   ├── AuthUserService.java      # 用户服务接口
│   │   │       │   ├── CaptchaService.java       # 验证码服务接口
│   │   │       │   └── impl/                     # 实现类
│   │   │       │       ├── AuthUserServiceImpl.java
│   │   │       │       └── CaptchaServiceImpl.java
│   │   │       ├── utils/               # 工具类
│   │   │       │   ├── RedisUtils.java        # Redis工具类
│   │   │       │   └── JwtUtils.java          # JWT工具类
│   │   │       └── AuthApplication.java # 启动类
│   │   └── resources/
│   │       ├── mapper/                  # MyBatis XML映射文件
│   │       │   └── AuthUserMapper.xml
│   │       ├── application.yml          # 配置文件
│   │       ├── application-dev.yml      # 开发环境配置
└── pom.xml

二、功能概述

1. 核心功能

  • 用户认证:登录、注册、令牌刷新、登出
  • 安全管理:JWT生成与验证、密码加密
  • 角色权限:用户角色和权限的管理
  • 验证码服务:生成和验证图形验证码

2. 业务流程

  1. 用户注册:用户提交注册信息 → 验证码验证 → 创建用户 → 分配默认角色
  2. 用户登录:用户提交登录信息 → 验证用户凭证 → 生成JWT令牌 → 缓存用户认证信息
  3. 认证鉴权:请求携带JWT令牌 → JWT过滤器验证令牌 → 提取用户信息 → 设置安全上下文 → 授权访问

三、接口文档

1. 用户登录

  • URI: /auth/login
  • 方法: POST
  • 描述: 用户登录并获取令牌
  • 请求Body:
    {
      "username": "admin",
      "password": "admin123",
      "captcha": "1a2b",
      "captchaKey": "abcd1234"
    }
    
  • 响应:
    {
      "code": 200,
      "message": "操作成功",
      "data": {
        "accessToken": "eyJhbGciOiJIUzI1NiJ9...",
        "refreshToken": "nQs6NGPzAJbfw5ddsSVGY2iqAomOmGW9",
        "tokenType": "Bearer",
        "expiresIn": 86400,
        "userId": 1,
        "username": "admin"
      }
    }
    
  • 错误码:
    • 400: 参数错误(如验证码错误)
    • 401: 用户名或密码错误
    • 403: 账号已被禁用

2. 用户注册

  • URI: /auth/register
  • 方法: POST
  • 描述: 注册新用户
  • 请求Body:
    {
      "username": "newuser",
      "password": "password123",
      "confirmPassword": "password123",
      "email": "user@example.com",
      "phone": "13800138000",
      "captcha": "1a2b",
      "captchaKey": "abcd1234"
    }
    
  • 响应:
    {
      "code": 200,
      "message": "操作成功",
      "data": "注册成功"
    }
    
  • 错误码:
    • 400: 参数错误(如密码不匹配、验证码错误)
    • 1002: 用户名已存在

3. 获取验证码

  • URI: /auth/captcha
  • 方法: GET
  • 描述: 生成图形验证码
  • 响应:
    {
      "code": 200,
      "message": "操作成功",
      "data": {
        "captchaKey": "abcd1234",
        "captchaImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEU..."
      }
    }
    

4. 刷新令牌

  • URI: /auth/refresh
  • 方法: POST
  • 描述: 使用刷新令牌获取新的访问令牌
  • 请求参数:
    • refreshToken: 刷新令牌字符串
  • 响应:
    {
      "code": 200,
      "message": "操作成功",
      "data": {
        "accessToken": "eyJhbGciOiJIUzI1NiJ9...",
        "refreshToken": "new_refresh_token",
        "tokenType": "Bearer",
        "expiresIn": 86400,
        "userId": 1,
        "username": "admin"
      }
    }
    
  • 错误码:
    • 401: 刷新令牌无效或已过期

5. 用户登出

  • URI: /auth/logout
  • 方法: POST
  • 描述: 用户登出,清除令牌
  • 请求头:
    • Authorization: Bearer {accessToken}
  • 响应:
    {
      "code": 200,
      "message": "操作成功",
      "data": null
    }
    

6. 获取当前用户信息

  • URI: /auth/current
  • 方法: GET
  • 描述: 获取当前登录用户的详细信息
  • 请求头:
    • Authorization: Bearer {accessToken}
  • 响应:
    {
      "code": 200,
      "message": "操作成功",
      "data": {
        "id": 1,
        "username": "admin",
        "email": "admin@example.com",
        "phone": "13800138000",
        "status": 1,
        "lastLoginTime": "2024-03-30T12:30:45",
        "lastLoginIp": "192.168.1.1",
        "roles": ["USER_ADMIN"]
      }
    }
    
  • 错误码:
    • 401: 未授权
    • 404: 用户不存在

四、数据库设计

认证模块涉及的主要数据库表:

1. auth_user (用户表)

  • id: 用户ID (主键)
  • username: 用户名
  • password: 加密密码
  • salt: 加密盐值
  • email: 邮箱
  • phone: 手机号
  • status: 状态(0:禁用,1:正常)
  • last_login_time: 最后登录时间
  • last_login_ip: 最后登录IP

2. auth_role (角色表)

  • id: 角色ID (主键)
  • name: 角色名称
  • code: 角色编码
  • description: 角色描述

3. auth_permission (权限表)

  • id: 权限ID (主键)
  • name: 权限名称
  • code: 权限编码
  • description: 权限描述

4. auth_user_role (用户角色关联表)

  • id: 主键
  • user_id: 用户ID (外键)
  • role_id: 角色ID (外键)

5. auth_role_permission (角色权限关联表)

  • id: 主键
  • role_id: 角色ID (外键)
  • permission_id: 权限ID (外键)

五、认证流程说明

  1. JWT认证流程:

    • 用户登录成功后,服务端生成JWT令牌和刷新令牌
    • 客户端请求时在请求头中携带JWT令牌
    • 服务端通过JwtAuthenticationFilter验证令牌
    • 验证通过后,设置SecurityContext并放行请求
  2. 权限校验流程:

    • 用户登录时加载其角色和权限
    • 将权限信息缓存到Redis中
    • 请求鉴权时从SecurityContext获取用户信息
    • 根据用户角色和权限决定是否允许访问

video-auth模块提供了完整的用户认证、授权和安全管理功能,为整个视频平台提供统一的身份验证服务。