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

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

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

基础抽象(CRUD)

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

  • BaseCrudService :使用 TypeORM 仓库为 create、update、remove、findById 和 findPage 操作提供标准实现。
  • BaseCrudController :暴露标准的 RESTful 端点(POST /、PUT /:id、DELETE /:id、GET /:id、POST /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)

安全层分为三个主要模块:UserModule、RoleModule 和 PermissionModule。

用户与认证模块

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

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

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

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

  • PermissionModule :定义细粒度的操作(例如,user:create、app:publish)。
  • RoleModule :将权限分组为角色(例如,admin、developer)。
  • 逻辑 :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。它被 LLMModelService 和 SettingService 广泛使用。

OssModule(对象存储服务)

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

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

模块摘要表

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

参考资料

相关推荐
god_cvz1 小时前
第三章:4、补充:对话记忆与会话管理
后端·ai编程
弈栈录1 小时前
用户、会话与消息表应该如何设计
数据库·后端
maozhenzhong1 小时前
接口加解密与安全通信方案
后端
god_cvz1 小时前
第三章:5、MCP协议入门
后端·ai编程
RaaS1001 小时前
AI网关选型指南:MAI Gateway(魔芋企业级AI网关)vs 开源方案全面对比
前端·后端
明月_清风1 小时前
ClickHouse 实战指南:为什么它能做到"亿级数据秒级查询"?
后端·数据分析
Wx-bishekaifayuan2 小时前
springboot铜仁非遗之家76938-计算机课程设计、毕业设计
java·spring boot·后端·spring·django·课程设计·旅游
唐青枫2 小时前
薛定谔的猫详解:一只猫如何揭开量子测量之谜
后端
锋行天下2 小时前
langgraph 循环节点的静态和动态实现
前端·后端
打工仔折腾 AI2 小时前
在线PDF工具隐私焦虑?把BentoPDF部署到极空间NAS本地处理
人工智能·后端·python·pdf·ai agent 实战