当前位置: 首页 > news >正文

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 架构


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

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

用户与认证模块

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

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

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

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

标题:认证与授权流程


系统配置(设置与字典)

SettingModule

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

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

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

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

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

CacheModule

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

OssModule(对象存储服务)

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

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

模块摘要表

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

参考资料

  • 官网文档:https://vtj.pro/
  • 在线平台:https://app.vtj.pro/
  • 开源仓库:https://gitee.com/newgateway/vtj
http://www.jsqmd.com/news/587455/

相关文章:

  • 3步解决学术文档符号显示难题:STIX Two字体全场景应用指南
  • 大数据存储格式深度解析:Parquet、Avro与ORC的性能调优与选型指南
  • AI辅助开发:让快马智能生成最优openclaw工作流命令方案
  • ComfyUI-VideoHelperSuite视频处理全攻略:从基础操作到高级应用
  • 新手避坑指南:用C语言处理时间差,PTA‘计算火车运行时间’常见错误盘点
  • B站直播推流码获取技术解密:从认证到推流的全链路实现
  • Edge/Chrome登录谷歌账号报错?3种实测有效的解决方法(含插件冲突排查)
  • WarcraftHelper:让经典魔兽争霸3重获现代游戏体验的兼容性增强工具
  • 5个强力步骤掌握BilibiliDown:B站视频下载效率倍增指南
  • 成都别墅装修,如何挑选一家预算透明、施工靠谱的装修公司? - 成都人评鉴
  • 给MTK手机加个新传感器?手把手教你修改Sensor驱动与Overlay配置(以加速度计为例)
  • 保姆级教程:手把手教你用百度网盘下载并安装MATLAB R2024a(附详细步骤与激活文件替换指南)
  • 拆解分布式系统中常见问题及解决方案
  • Qwen3.5-9B Visio图表描述生成:从文本到系统架构图的自动构思
  • CVPR-2026 | 无 GNSS 也能飞!Bearing-UAV:实现非对齐空天视角的纯视觉无人机导航 - MKT
  • OpCore-Simplify:重构黑苹果配置的智能引擎与实践指南
  • 告别重复编码:用快马AI自动生成数据库增删改查代码,效率提升300%
  • 从IOU到mAP:解码YOLO模型评估指标背后的实战逻辑
  • 3秒获取百度网盘提取码:开源智能工具的终极解决方案
  • Windows下OpenClaw全攻略:Qwen3.5-9B-AWQ-4bit接入与避坑指南
  • Mybatis @MapKey注解:高效实现List到Map的转换技巧
  • 网络SEO外包的流程是什么_网络SEO外包的服务内容包括哪些
  • WinAsar开源工具从入门到精通:高效处理Electron应用资源文件指南
  • 从SR到JK:用Logisim仿真带你一步步理解触发器的前世今生
  • Transformer与NLP研究
  • 共筑数字时代信任基石——宝尊成功举办第一届品牌数据安全分享会
  • GPT-oss:20b优化技巧:如何调整推理强度提升模型响应速度
  • CAD中的dxf文件解析(四):多段线凸度计算实战
  • Genero FGL避坑指南:那些官方文档没告诉你的数据库性能优化技巧
  • 计算机毕业设计 | springboot线上杂货铺商城 商品日用百货购买平台(附源码)