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 码。

参考资料

相关推荐
踩着两条虫2 小时前
VTJ.PRO 在线应用开发平台的业务模块(应用、DSL、模板、订单、智能体、技能)
后端·agent·nestjs
无籽西瓜a2 小时前
【西瓜带你学设计模式 | 第二期-观察者模式】观察者模式——推模型与拉模型实现、优缺点与适用场景
java·后端·观察者模式·设计模式
倾颜2 小时前
我是怎么把单 Tool Calling 升级成多 Tool Runtime 的
前端·后端·langchain
Counter-Strike大牛2 小时前
SpringBoot项目调用数据库函数报错Result consisted of more than one row
数据库·spring boot·后端
清汤饺子2 小时前
Superpowers:给 AI 编程 Agent 装上"工程化超能力"
前端·javascript·后端
念何架构之路2 小时前
Go语言表达式的求值顺序
开发语言·后端·golang
zihao_tom2 小时前
Springboot-配置文件中敏感信息的加密:三种加密保护方法比较
java·spring boot·后端
.生产的驴3 小时前
1Panel实战|SpringColud微服务部署生产环境一键部署Docker+Nacos+MySQL 数据定时备份 控制台 安全高效易维护
服务器·后端·mysql·spring cloud·docker·微服务·信息可视化
金銀銅鐵3 小时前
[Java] 从 class 文件看 EasyMock 对 @Mock 注解的处理
后端·单元测试