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

参考资料

相关推荐
无风听海11 小时前
深入剖析 YARP 的 Transforms:构建灵活的反向代理转换管道
后端·中间件·asp.net
Gopher_HBo12 小时前
负载均衡
后端
自由生长202412 小时前
RAG已死?什么标题党啊!
后端
canonical_entropy13 小时前
下一代低代码渲染框架 nop-chaos-flux 的设计原则
前端·低代码·前端框架
东方小月13 小时前
5分钟搞懂Harness Engineering(驾驭工程):从提示词到AI Agent的进化之路
前端·后端·架构
折哥的程序人生 · 物流技术专研15 小时前
Java面试85题图解版(一):基础核心篇
java·开发语言·后端·面试
Moment16 小时前
面试官:如果产品经理给你多个需求,怎么让AI去完成❓❓❓
前端·后端·面试
每天进步一点_JL17 小时前
JVM 内存模型与 OOM 排查:从入门到实战
后端
REDcker17 小时前
个人博客网站建设指南 Markdown资产化与静态站选型部署
前端·后端·博客·markdown·网站·资产·建站
Supersist17 小时前
【设计模式03】使用模版模式+责任链模式优化实战
后端·设计模式·代码规范