平台管理教程

平台级管理功能指南:站点生命周期、用户体系、角色模板、内容模型、敏感词库、操作日志与在线会话。

站点生命周期管理

rsSites 将每个子站视为独立实体,通过「站点管理」面板统一控制子站的完整生命周期。每个子站具有以下内置状态:

创建站点

进入「站点管理」→「新建站点」,填写以下核心信息:

站点创建后自动生成独立的数据库 schema 和文件存储目录,各子站间数据物理隔离。

克隆站点

克隆功能将现有站点的栏目结构、内容模型定义、角色配置和模板文件整体复制到新站点,但不复制实际内容数据。适用于快速搭建同类型子站的场景(如多个城市分站使用相同栏目结构)。克隆操作在后台异步执行,完成后自动通知平台管理员。

启停与暂停

在站点列表中对任意站点执行状态变更:

用户与组织管理

rsSites 采用「平台级统一用户 + 子站级授权」的混合架构。用户账号在平台层全局唯一,而角色和权限按子站分配。

跨子站统一用户体系

所有用户账号(包括平台管理员、子站管理员、编辑、审核人等)均存储在平台层用户表中。同一用户可以被添加到任意数量的子站,在每个子站中可以拥有不同的角色。用户只需一个账号即可跨站工作,登录后通过站点切换器在不同子站间无缝跳转。

用户认证支持:本地密码(bcrypt 哈希)、LDAP/AD 集成(企业部署)、以及 OAuth2/OIDC 第三方登录(如企业微信、飞书等)。

部门维护

平台支持两级组织架构:部门组(如「集团总部」)和部门(如「技术部」「市场部」)。部门可以跨子站关联——例如「集团总部 / 技术部」可以作为整体被添加到多个子站中,部门成员自动继承子站的访问权限。部门管理员可以独立维护本部门成员列表,无需平台管理员介入。

账号软删除

删除用户时采用软删除策略:账号被标记为已删除状态,个人数据保留(满足审计合规要求),但该账号立即丧失所有站点的登录和操作权限。被软删除的账号在 180 天保留期内可由平台管理员恢复;超期后系统自动清理个人身份信息,仅保留操作日志中的匿名化引用。

全局角色模板

角色模板是一套可复用的权限配置方案。rsSites 预置了常用角色模板,也支持平台管理员自定义。

预置角色

系统出厂自带以下角色模板,可直接使用或作为自定义基础:

每个角色模板明确定义了可访问的功能模块和操作粒度(读取 / 创建 / 编辑 / 删除 / 发布 / 审核)。

复制到新站点

创建新站点时,可选择一键复制平台级的角色模板集到该站点。复制后,子站管理员可在站点内进一步调整角色权限,不影响平台模板。平台管理员修改全局模板后,可选择「推送到已复制的站点」来批量更新。

内容模型定义

内容模型(Content Model)是 rsSites 的核心抽象之一。它定义了某种内容类型所包含的字段结构,类似于数据库表 schema 但面向内容管理场景设计。

模型与字段

每个内容模型由以下要素组成:

一个模型包含若干自定义字段,字段定义模型下每条内容的数据结构。

字段类型

rsSites 支持以下内置字段类型:

模型与字段关系

模型与字段是一对多关系:一个模型可以有多个字段,每个字段属于且仅属于一个模型。字段支持排序、必填标记和默认值。字段类型一旦有内容条目使用即锁定不可更改,防止新旧数据解释不一致。

敏感词库维护

rsSites 内置敏感词过滤引擎,平台管理员可在「敏感词库」面板中统一维护敏感词列表。敏感词库在平台层共享,对所有子站生效。

添加与删除敏感词

支持单个添加敏感词,每个敏感词需指定:

正则类型的敏感词在添加时自动编译校验,语法错误直接拒绝保存。删除敏感词后,历史命中记录中的敏感词 ID 自动置空,快照字段保留原文,不影响过去的检测记录。

提交拦截与全量扫描

内容提交审核时自动经过敏感词过滤引擎,命中即阻断提交,同时写入命中记录和操作日志。系统定时任务每 6 小时对全平台已发布内容执行一次全量扫描,新增敏感词可回溯覆盖历史内容。平台管理员也可通过后台按钮手动触发全量扫描。

跨站汇总视图

平台管理员可查看所有子站的敏感词命中情况——内容标题、命中词、所在站点、处理状态。支持按状态筛选,用于集中抽查和治理。

操作日志查询

rsSites 记录平台和所有子站的关键操作日志,满足安全审计和问题排查需求。操作日志一旦写入即不可篡改或删除。

筛选查询

操作日志支持多维度组合筛选:

每条日志记录包含:操作时间、操作人、IP 地址、User-Agent、操作类型、目标资源标识、变更前后摘要(diff)。

永久保留

操作日志同步写入 PostgreSQL,默认永久保留,不设自动清理策略。日志可按站点、用户、操作类型、时间范围筛选查询,子站管理员只能查看本站日志,平台管理员可跨站查询。

在线会话管理

「在线会话」面板提供当前所有活跃用户会话的实时视图,帮助平台管理员掌握系统使用情况并进行安全干预。

查看在线用户

会话列表展示以下信息:

支持按用户、站点、IP 筛选,以及按登录时间或活跃时间排序。

强制下线

平台管理员可以对任意活跃会话执行强制下线操作。执行后:

支持批量强制下线——按用户(踢出该用户的所有会话)、按站点(踢出某站点的所有在线用户)、或按 IP 范围。适用于安全事件响应场景(如账号被盗、异常登录)。

核心机制解析

下面从代码实现角度,梳理平台级管理背后几个关键机制的工作原理。

站点生命周期

系统把「站点」视为一等实体:建站时生成独立的文件存储目录,各子站的模板与上传文件目录级隔离,数据库层面按 site_id 逻辑隔离,不同站点的用户看不到彼此的数据;克隆则复制栏目结构、内容模型、角色与模板,但刻意不含内容数据,用于快速搭建同类型分站。站点的运营 / 暂停 / 废弃是一组明确状态,暂停时前台返回可定制维护页、后台内容只读。

跨站协作通过「内容推送」完成:源站推送的内容进入目标站的接收 / 拒绝队列,由目标站管理员决定采纳与否;站点整体还能导出为栏目树 + 内容草稿的 JSON、再导入(支持 dry-run 预演),便于迁移与备份。

统一用户与组织

账号在平台层全局唯一,角色与权限按子站分配——一个账号可跨多个子站拥有不同角色。登录采用平台 / 子站双入口,配图形验证码与失败锁定;管理员可「模拟登录」以他人身份操作,全程带审计并展示「正在模拟」横幅。会话可被单踢或全踢,IP 黑名单在最外层中间件统一拦截。

治理与可观测

敏感词引擎用 Aho-Corasick 自动机一次扫描命中所有词(含正则类型),内容提交时即拦截并留痕;定时任务每 6 小时对全平台已发布内容做全量扫描,新词可回溯历史。操作日志写入后即不可篡改,支持按站点 / 用户 / 操作类型 / 时间 / 资源多维筛选并永久保留,以满足审计;访问统计由定时聚合任务计算趋势与热门,通知中心维护未读计数。