VTJ.PRO 在线应用开发平台的核心模块(用户、认证、RBAC、缓存、设置)

核心模块(用户、认证、RBAC、缓存、设置)

本节深入探讨 backend/src/core 目录,该目录包含了 VTJ.PRO 平台的基础设施。这些模块处理横切关注点,例如身份管理、访问控制、持久化配置以及业务模块使用的抽象 CRUD 模式。

基础抽象(CRUD)

为确保一致性并减少样板代码,平台为控制器和服务使用了抽象基类。

  • BaseCrudService :使用 TypeORM 仓库为 createupdateremovefindByIdfindPage 操作提供标准实现。
  • BaseCrudController :暴露标准的 RESTful 端点(POST /PUT /:idDELETE /:idGET /:idPOST /page),这些端点直接映射到 BaseCrudService 的方法。

CRUD 数据流

下图展示了请求如何流经这些抽象层。

标题:基础 CRUD 架构

flowchart A[Client Request] B[BaseCrudController] C[BaseCrudService] D[TypeORM Repository] E[MySQL Database] F[UserController] G[UserService] A --> B B --> C C --> D D --> E B -- extends --> F C -- extends --> G subgraph Implementation Example F G end subgraph Code Entity Space A B C D E end

身份与访问控制(认证、用户、RBAC)

安全层分为三个主要模块:UserModuleRoleModulePermissionModule

用户与认证模块

UserModule 处理用户生命周期和认证。它支持多种登录策略:

  1. 本地登录:标准的用户名/密码认证。
  2. OAuth/静默登录 :通过 AUTH_CODE 与外部提供商集成。
  3. 邮箱验证 :由 EmailVerificationModule 管理,用于注册和密码重置。

RBAC(基于角色的访问控制)

访问控制通过 UsersGuard 实现,它检查有效的 JWT 令牌并验证权限。

  • PermissionModule :定义细粒度的操作(例如,user:createapp:publish)。
  • RoleModule :将权限分组为角色(例如,admindeveloper)。
  • 逻辑UsersGuard 检索用户的角色和关联权限,以验证当前请求路径/方法是否被授权。

标题:认证与授权流程

sequenceDiagram participant C as Client participant G as UsersGuard participant S as UserService participant R as Role/Permission C->>G: Request + JWT Token G->>G: validateToken() alt [Token Valid] G->>S: findById(userId) S-->>G: User Entity + Roles G->>R: Check matchPermission() alt [Authorized] G-->>C: 200 OK (Proceed to Controller) else [Forbidden] G-->>C: 403 Forbidden end else [Token Invalid] G-->>C: 401 Unauthorized end

系统配置(设置与字典)

SettingModule

管理全局系统设置,如站点名称、Logo 和注册开关。

  • 存储:设置以键值对的形式存储在数据库中。
  • 缓存SettingService 将设置缓存在内存中,以避免频繁查询数据库。

DictionaryModule

处理用于 UI 下拉菜单和常量的静态和动态数据字典。

  • DictionaryEntity:定义字典类别。
  • DictionaryItemEntity:定义类别中的具体条目。

基础设施模块(缓存与对象存储)

CacheModule

一个轻量级封装,根据环境配置使用内存缓存(使用 LRUCache)或 Redis。它被 LLMModelServiceSettingService 广泛使用。

OssModule(对象存储服务)

为文件上传提供统一接口。

  • 本地存储 :将文件保存到 public/uploads 目录。
  • 阿里云 OSS :通过 ali-oss SDK 支持远程云存储。
  • 功能uploadputStreamdelete 是暴露给业务模块(如 DslModule)的主要方法,用于存储生成的项目 ZIP 文件。

模块摘要表

模块 关键实体 / 类 主要职责
用户 UserEntity, UserService 用户 CRUD、密码哈希、JWT 签发。
认证 UsersGuard 全局请求拦截和令牌验证。
RBAC RoleEntity, PermissionEntity 通过角色将用户映射到权限。
设置 SettingEntity 系统级配置(例如,isRegister)。
字典 DictionaryEntity 元数据和查找表管理。
对象存储 OssService 抽象的文件存储(本地 vs. 阿里云)。
缓存 CacheService 高性能临时数据存储。
邮件 EmailVerificationService 通过 SMTP 发送和验证 OTP 码。

参考资料

相关推荐
codedx6 分钟前
LangChain 和 LangGraph 构建的 Agent 项目模版
后端·langchain·agent
葫芦和十三1 小时前
图解 MongoDB 08|ESR 原则:复合索引的字段顺序怎么定
后端·mongodb·agent
葫芦和十三8 小时前
图解 MongoDB 07|索引类型:七种索引,七种访问形状
后端·mongodb·agent
朦胧之10 小时前
AI 编程-老项目改造篇
java·前端·后端
爱勇宝13 小时前
我做了一个只用来搜歌词的小 App
android·前端·后端
IT_陈寒14 小时前
SpringBoot自动配置坑了我一晚上,原来问题出在这
前端·人工智能·后端
SelectDB14 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
SelectDB14 小时前
秒级弹性、最高降本 70%:SelectDB Serverless 如何重塑云数仓资源效率
大数据·后端·云原生
PinkSun14 小时前
Spring AI ChatMemory踩坑实录:重启丢数据、Agent丢记忆、对话溢出
后端·ai编程
壹方秘境14 小时前
我用Go语言开发了一个跨平台的HTTPS抓包和调试工具
前端·后端·ios