查看源文件

用户管理模块负责处理用户的 注册、登录和权限控制功能。该模块的核心目标是:

  • 确保用户身份的安全性。

  • 提供灵活的权限管理机制,支持基于角色的访问控制,通过 RBAC 实现对不同角色(如普通用户和管理员)的功能权限区分,通过组织标签实现数据访问权限隔离。

  • 为其他模块提供用户信息支持。

一、功能需求

用户管理设计方案

二、技术选型

用户管理技术选项

三、关键流程

01、用户注册流程

  • 接收用户注册请求,验证用户名和密码;

  • 检查用户名是否已存在;

  • 使用 BCrypt 加密密码;

  • 创建用户记录,设置默认角色为USER;

  • 创建用户私人组织标签(PRIVATE_username);

  • 将私人组织标签设置为用户的主组织标签;返回注册成功响应。

02、用户登录流程

  • 接收用户登录请求,获取用户名和密码;

  • 查询用户记录并验证密码;加载用户组织标签信息;

  • 生成包含用户信息和组织标签的 JWT Token;

  • 返回登录成功响应和 Token。

03、组织标签管理流程

  • 管理员创建组织标签,设置标签名称和描述;

  • 可选择设置父级组织标签(支持简单层级);

  • 管理员为用户分配组织标签;

  • 系统自动保留用户的私人组织标签,确保其不被移除;

  • 用户查看自己的组织标签。

04、权限验证流程

  • 解析请求头中的 JWT Token,验证有效性;

  • 提取用户 ID、角色和组织标签信息;

  • 对功能权限请求,根据用户角色判断是否允许访问;

  • 对数据权限请求,根据用户组织标签判断是否可以访问特定资源;

  • 允许或拒绝请求访问;权限验证流程具体讲解见: ✅如何基于Spring Security实现RBAC?

四、接口设计

01、用户注册接口

  • URL: /api/v1/users/register

  • Method: POST

  • Request Body:

  • Response:

02、用户登录接口

  • URL: /api/v1/users/login

  • Method: POST

  • Request Body:

  • Response:

03、获取用户信息接口

  • URL: /api/v1/users/me

  • Method: GET

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Response:

04、用户列表查询接口

  • URL: /api/v1/admin/users/list

  • Method: GET

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Query Parameters:

    • page: 页码(从1开始,默认1)

    • size: 每页条数(默认20)

    • keyword: 搜索关键词(可选)

    • orgTag: 按组织标签筛选(可选)

    • status: 用户状态(可选,0=禁用,1=启用

  • Response:

05、组织标签管理接口

5.1 创建组织标签(管理员)

  • URL: /api/v1/admin/org-tags

  • Method: POST

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Request Body:

  • Response:

5.2 为用户分配组织标签(admin)

  • URL: /api/v1/admin/users/{userId}/org-tags

  • Method: PUT

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Request Body:

  • Response:

5.3 设置用户主组织

  • URL: /api/v1/users/primary-org

  • Method: PUT

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Request Body:

  • Response:

5.4 获取用户组织标签详情

  • URL: /api/v1/users/org-tags

  • Method: GET

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Response:

5.5 组织标签树查询接口 (admin)

  • URL: /api/v1/admin/org-tags/tree

  • Method: GET

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Response:

5.6 更新组织标签接口(admin)

  • URL: /api/v1/admin/org-tags/{tagId}

  • Method: PUT

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Request Body:

  • Response:

5.7 删除组织标签接口

  • URL: /api/v1/admin/org-tags/{tagId}

  • Method: DELETE

  • Headers:

    • Authorization: Bearer JWT_TOKEN_STRING
  • Response:

五、库表设计

01、用户表 (users)

字段名数据类型是否主键描述
idBIGINT是用户唯一标识
usernameVARCHAR(255)否用户名,唯一
passwordVARCHAR(255)否加密后的密码
roleENUM(‘USER’, ‘ADMIN’)否用户角色
org_tagsVARCHAR(255)否用户所属组织标签,多个用逗号分隔
primary_orgVARCHAR(50)否用户主组织标签
created_atTIMESTAMP否创建时间
updated_atTIMESTAMP否更新时间

建表语句:

02、组织标签表

字段名数据类型是否主键描述
tag_idVARCHAR(50)是标签唯一标识
nameVARCHAR(100)否标签名称
descriptionTEXT否描述
parent_tagVARCHAR(50)否父标签ID
created_byBIGINT否创建者ID
created_atTIMESTAMP否创建时间
updated_atTIMESTAMP否更新时间

建表语句: