核心模块(用户、认证、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 处理用户生命周期和认证。它支持多种登录策略:
- 本地登录:标准的用户名/密码认证。
- OAuth/静默登录:通过
AUTH_CODE与外部提供商集成。 - 邮箱验证:由
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-ossSDK 支持远程云存储。 - 功能:
upload、putStream和delete是暴露给业务模块(如DslModule)的主要方法,用于存储生成的项目 ZIP 文件。
模块摘要表
| 模块 | 关键实体 / 类 | 主要职责 |
|---|---|---|
| 用户 | UserEntity, UserService | 用户 CRUD、密码哈希、JWT 签发。 |
| 认证 | UsersGuard | 全局请求拦截和令牌验证。 |
| RBAC | RoleEntity, PermissionEntity | 通过角色将用户映射到权限。 |
| 设置 | SettingEntity | 系统级配置(例如,isRegister)。 |
| 字典 | DictionaryEntity | 元数据和查找表管理。 |
| 对象存储 | OssService | 抽象的文件存储(本地 vs. 阿里云)。 |
| 缓存 | CacheService | 高性能临时数据存储。 |
| 邮件 | EmailVerificationService | 通过 SMTP 发送和验证 OTP 码。 |
参考资料
- 官网文档:vtj.pro/
- 在线平台:app.vtj.pro/
- 开源仓库:gitee.com/newgateway/…