我的文档库

现代化运营后台设计:基于 React、Vite 与 Cloudflare Edge 的管理系统架构

本文介绍基于 React+Vite+Cloudflare Edge 构建现代化运营后台。采用四层分层架构,实现路由守卫、read/edit/none 细粒度权限,前后端双重校验;封装 API 客户端,做会话轮询保活、BI 查询防护,适配移动端响应式布局,使用前端加密增强通信,明确状态管理与演进方向,适配内部管理平台。

一、背景

运营后台与面向用户的业务前端不同。

用户端更关注:

  • 页面体验
  • 首屏性能
  • 交互效率
  • SEO
  • 多端适配

而运营后台更关注:

  • 权限边界
  • 数据操作安全
  • 管理效率
  • 实时配置
  • 数据查询
  • 操作可追溯
  • 多设备适配

随着前端应用逐渐承担更多运营和运维职责,一个完整的后台系统往往需要同时连接:

用户管理
数据同步
配置管理
数据分析
性能监控
审计日志
文件管理

如果这些能力全部以独立页面和独立接口实现,很容易出现权限逻辑分散、认证逻辑重复、API 调用方式不一致等问题。

因此,一个现代化后台系统更适合采用:

                 Admin SPA


            ┌─────────────────┐
            │  Route / Guard  │
            └────────┬────────┘

          ┌──────────┴──────────┐
          ▼                     ▼
    Authentication        Authorization
          │                     │
          └──────────┬──────────┘

              API Client Layer

        ┌────────────┼────────────┐
        ▼            ▼            ▼
      BFF           BI           R2

本文介绍一个基于 React + Vite + TypeScript + Tailwind CSS + React Router + Cloudflare Edge 的后台管理系统设计,并重点讨论权限体系、认证与会话保活、数据查询、响应式布局以及前后端边界。


二、设计目标

整个后台系统主要围绕以下目标设计。

1. 统一权限体系

所有页面、路由和操作按钮使用统一权限模型。

2. 统一认证

登录、Session 验证、权限刷新由统一认证模块负责。

3. 管理能力模块化

将用户、同步、配置、BI、监控、审计等能力拆分成独立业务模块。

4. 支持移动端

后台不仅针对桌面浏览器设计,同时保证移动端基本可用。

5. 支持暗色模式

通过 Tailwind CSS 的 class 策略统一管理主题。

6. Edge 部署

使用 Cloudflare Workers Static Assets 托管前端静态资源,获得全球边缘分发能力。

原方案的技术选型也是围绕这一目标展开:React 19、Vite 8、TypeScript、Shadcn/ui、Tailwind CSS、React Router 7,以及 Cloudflare Workers Static Assets。


三、整体架构

整体可以划分为五层:

┌────────────────────────────────────────────┐
│                  Admin UI                  │
│                                            │
│ Login / Users / Sync / Config / BI / ...  │
└─────────────────────┬──────────────────────┘


┌────────────────────────────────────────────┐
│              Application Layer             │
│                                            │
│ Router / Permission / Auth / State / UI   │
└─────────────────────┬──────────────────────┘


┌────────────────────────────────────────────┐
│                 API Layer                  │
│                                            │
│ API Client / Encryption / Error Handling  │
└─────────────────────┬──────────────────────┘

            ┌─────────┼──────────┐
            ▼         ▼          ▼
       Admin BFF      BI        Storage


      Cloudflare Edge

其中前端 Admin SPA 主要负责:

UI
Routing
Permission Presentation
Session Management
API Request
Data Visualization

服务端负责:

Authentication
Authorization
Data Access
Configuration
Audit

这种划分可以让前端承担“管理界面”的职责,而不会将服务端权限逻辑错误地放在浏览器中。


四、技术栈

类别技术作用
FrameworkReactUI 与组件系统
LanguageTypeScript类型安全
BuildVite构建与开发环境
UIShadcn/ui基础 UI 组件
PrimitiveRadix Primitives无样式交互原语
CSSTailwind CSSUtility-first 样式
RouterReact Router路由与页面导航
DeploymentCloudflare Workers Static AssetsEdge 静态资源托管

原始方案采用的技术栈与这一分层基本一致。


五、应用目录设计

后台应用可以按照业务职责组织:

src/
├── App.tsx

├── pages/
│   ├── Login.tsx
│   ├── Welcome.tsx
│   ├── Users.tsx
│   ├── Sync.tsx
│   ├── WorkerConfig.tsx
│   ├── BiReport.tsx
│   ├── Monitor.tsx
│   ├── Audit.tsx
│   └── Upload.tsx

├── hooks/
│   └── useAuth.tsx

└── lib/
    ├── api.ts
    ├── crypto.ts
    └── permissions.ts

核心原则是:

Page

Hook / Business Logic

API Client

Backend

页面组件不应该直接处理:

  • 加密算法
  • Session 校验
  • 权限判断细节
  • HTTP 错误解析

这些能力应该收敛到公共模块。


六、路由设计

后台系统采用“路由即功能模块”的设计。

/login
/welcome

/users
/sync
/worker-config
/bi-report
/monitor
/audit
/upload

可以进一步抽象成:

Route

  ├── Public
  │    └── /login

  └── Protected
       ├── /welcome
       ├── /users
       ├── /sync
       ├── /worker-config
       ├── /bi-report
       ├── /monitor
       ├── /audit
       └── /upload

原方案中的路由也采用这种模块化设计,并为各模块配置独立权限标识。


七、路由守卫

不能因为用户能够访问某个 URL,就认为用户拥有该功能。

因此路由需要经过统一权限守卫:

Browser


React Router


Authentication


PermissionRoute

   ├── No Permission
   │       │
   │       ▼
   │    /welcome

   └── Permission


          Page

例如:

/users

需要:

users

权限。

而:

/monitor

需要:

monitor

权限。


八、权限模型

后台系统采用三级权限:

edit
read
none

可以表示为:

                Permission

          ┌─────────┼─────────┐
          ▼         ▼         ▼
         edit      read      none

含义:

edit

可以查看和修改。

read

只能查看。

none

无权访问。

这种模型比单纯的:

admin / user

更加细粒度。


九、权限与 UI

权限不仅用于路由。

对于页面内部的操作,也应该根据权限控制。

例如:

User List

├── View

├── Edit

├── Delete

└── Reset Password

如果用户只有:

users = read

则:

View       → enabled
Edit       → hidden / disabled
Delete     → hidden / disabled
Reset      → hidden / disabled

可以封装成:

const canEdit = useCanEdit("users");

或者:

const permission = usePermission("users");

原方案也是通过 usePermissionuseCanEdit 等 Hook 将权限判断统一收敛。


十、权限的两层防线

需要特别注意:

前端权限控制只是用户体验层面的控制,真正的权限边界必须位于服务端。

因此应该形成:

             User Request

          ┌───────┴───────┐
          ▼               ▼
      Frontend          Backend
      Guard              Guard
          │               │
          ▼               ▼
       UI UX          Security Boundary

前端负责:

是否显示菜单
是否显示按钮
是否允许进入页面

服务端负责:

是否真的允许执行操作

即使用户手动构造 HTTP 请求绕过前端,服务端仍然应该返回:

403 Forbidden

十一、认证体系

登录页面提供:

Email
Password

登录流程:

┌──────────┐
│ Admin UI │
└────┬─────┘

     │ credentials

┌───────────────┐
│ Encrypt       │
└────┬──────────┘

     │ POST /login

┌───────────────┐
│ Admin BFF     │
├───────────────┤
│ decrypt       │
│ verify user   │
│ create session│
└────┬──────────┘


 Session Token

前端收到 Session 后进入管理控制台。


十二、Session 保活

后台系统与普通内容网站不同。

管理员可能长时间打开页面,同时网络环境可能发生短暂变化。

因此采用周期性的 Session 验证。

当前方案设置:

15 秒

执行一次 Session Verify。

Browser

   ├── 15s → /verify
   ├── 15s → /verify
   ├── 15s → /verify
   └── ...

原方案明确采用 15 秒轮询,并连续失败 3 次后才登出,以容忍短暂网络抖动。


十三、为什么不是一次失败就登出

如果:

verify

network error

立即退出用户,会产生非常差的管理体验。

例如:

网络瞬断

verify 失败

立即 logout

重新登录

因此采用:

Failure Count

     ├── 1 → Continue
     ├── 2 → Continue
     └── 3 → Logout

这相当于增加了一层简单的网络抖动容错。


十四、认证状态机

可以进一步将 Session 抽象成状态机:

             ┌─────────────┐
             │ Unauthenticated
             └──────┬──────┘
                    │ login

             ┌─────────────┐
             │ Authenticated
             └──────┬──────┘
                    │ verify

             ┌─────────────┐
             │   Refresh   │
             └──────┬──────┘

          ┌─────────┴─────────┐
          ▼                   ▼
       Success              Failure
          │                   │
          ▼                   ▼
 Authenticated          Retry Counter


                       Threshold Reached


                       Unauthenticated

这样比在多个组件中分别管理 Session 状态更加清晰。


十五、首次使用流程

对于尚未初始化的系统,可以提供首次设置密码流程:

Login


Account Exists?

  ├── Yes
  │    ↓
  │  Normal Login

  └── No

 Set Initial Password

 Create Root Account

初始化账号拥有完整管理权限。

需要注意,生产系统应根据具体安全要求增加:

  • 初始化凭据保护
  • 一次性初始化 Token
  • 初始化有效期
  • 审计记录
  • 强密码策略

避免简单的“账号不存在即自动初始化”成为安全入口。


十六、API Client

前端不建议在页面中直接使用:

fetch(...)

而应该统一封装 API Client:

Page


API Client

 ├── Encrypt
 ├── Headers
 ├── Timeout
 ├── Error Handling
 ├── 401 Handling


Backend

原方案中的 API 客户端统一负责加密请求、30 秒超时和 401 跳转。


十七、统一 HTTP 超时

后台系统不能让请求无限等待。

可以统一设置:

Request Timeout

   30 seconds

流程:

Request


30s Timeout

  ├── Success → Response

  └── Timeout → Error

尤其是 BI 大查询和数据同步类请求,更需要明确的超时边界。


十八、401 统一处理

如果 API 返回:

401 Unauthorized

说明当前 Session 已经失效。

API Client 可以统一处理:

API Response

     ├── 2xx → Return

     ├── 401 → Clear Session
     │          ↓
     │       /login

     └── Other → Error Handler

这样页面不需要重复实现:

if (response.status === 401)

十九、BI 报表设计

BI 报表属于后台系统中数据量较大的功能。

原方案设置:

Default Limit: 500
Maximum Limit: 100,000

同时限制表格实际展示数量。

整体数据链路:

Admin UI


BI Query


BI Service


Result

   ├── Filter
   ├── Sort
   ├── Deduplicate
   └── Visualization

二十、为什么查询数量与展示数量分离

这是 BI 页面中一个很实用的设计。

例如:

Query Result

50,000 rows

并不意味着浏览器需要同时渲染 50,000 行。

因此可以拆成:

Data Query


Up to 100k


Frontend Dataset

     ├── Table → First 100
     ├── Chart → Aggregated
     └── CSV → Full Dataset

这样可以在保留数据处理能力的同时,避免 DOM 渲染过量。


二十一、多字段筛选

BI 查询支持多个字段组合:

Condition A
Condition B
Condition C

并支持:

AND
OR

例如:

(A AND B) OR C

前端应该将筛选条件抽象成结构化 Query Model,而不是拼接字符串。

例如:

interface Filter {
  field: string;
  operator: string;
  value: unknown;
}

进一步:

interface FilterGroup {
  operator: "AND" | "OR";
  filters: Filter[];
}

这样可以让:

  • UI
  • Query Builder
  • API 参数
  • 数据导出

共享同一套数据结构。


二十二、BI 缓存策略

后台查询通常存在明显的时间特征。

例如:

今日数据

变化频繁

而:

历史数据

变化较少

因此采用不同缓存 TTL:

数据TTL
今日数据2 分钟
历史数据30 分钟

原方案也明确采用这一缓存策略。

可以抽象成:

Query


Cache

 ├── Hit → Return

 └── Miss


     BI API


     Cache

二十三、缓存边界

当前缓存属于页面级 / 模块级缓存

因此:

Component Mount

Create Cache

Query

Reuse

Component Unmount

Clear

这种策略简单可靠,但不会自动形成跨用户、跨页面的全局缓存。

因此多人同时查询相同数据时,并不会天然共享同一份浏览器缓存。

这是客户端缓存与服务端缓存之间的重要区别。


二十四、CSV 导出

BI 数据导出与表格展示应该解耦。

             Query Result

        ┌─────────┴─────────┐
        ▼                   ▼
      Table                CSV
    First 100            Full Data

表格:

100 rows

CSV:

Full Dataset

这样既能保证 UI 性能,又可以满足数据导出需求。

对于大数据量导出,还需要关注浏览器内存占用。


二十五、响应式设计

后台系统不能简单地把桌面布局缩小到手机。

应该根据设备尺寸改变信息组织方式。

整体策略:

Desktop

   ├── Sidebar
   ├── Table
   └── Multi-column Layout

Mobile

   ├── Sheet Navigation
   ├── Card List
   └── Single-column Layout

二十六、侧边栏

桌面:

┌──────┬───────────────────┐
│      │                   │
│ Side │      Content      │
│ bar  │                   │
│      │                   │
└──────┴───────────────────┘

移动端:

┌───────────────────┐
│ ☰      Page       │
├───────────────────┤
│                   │
│      Content      │
│                   │
└───────────────────┘

侧边栏隐藏后,通过顶部菜单按钮打开 Sheet。

原方案采用 lg 断点控制桌面侧边栏,并在移动端通过 Sheet 唤出。


二十七、列表双布局

用户管理等数据列表不应该强制使用桌面 Table。

桌面:

┌──────┬──────┬──────┬──────┐
│ Name │ Role │ State│ Action│
├──────┼──────┼──────┼──────┤
│ ...  │ ...  │ ...  │ ...  │
└──────┴──────┴──────┴──────┘

移动端:

┌──────────────────┐
│ User             │
│ Role: ...        │
│ State: ...       │
│ [Action]         │
└──────────────────┘

即:

Desktop → Table
Mobile  → Card

这种方式比简单给 Table 加横向滚动更适合后台操作。


二十八、Dialog 移动端适配

桌面端 Dialog 可以拥有较大的固定宽度。

移动端则需要:

width: calc(100% - 2rem);
max-height: 90dvh;
overflow-y: auto;

核心目标是:

Viewport

   ├── Safe Margin


 Dialog

   └── Internal Scroll

避免表单内容超出屏幕。


二十九、Worker 配置页面

配置管理属于典型的管理型 UI。

桌面:

┌───────────────┬──────────────────┐
│ Config Name   │ Value            │
├───────────────┼──────────────────┤
│ interval      │ 5                │
│ threshold     │ 2.5              │
└───────────────┴──────────────────┘

移动端:

Config Name

Value

即:

Desktop → Row
Mobile  → Column

这种布局转换可以通过 Tailwind 响应式 class 实现。


三十、监控数据可视化

性能监控页面通常包含:

Total
Average
Good
Warning
Poor

移动端采用单列:

┌──────────┐
│    P3    │
└──────────┘
┌──────────┐
│    P2    │
└──────────┘
┌──────────┐
│    P1    │
└──────────┘
┌──────────┐
│    P0    │
└──────────┘

桌面端则可以使用:

grid-cols-4

提高信息密度。


三十一、暗色模式

主题切换采用 Tailwind CSS:

class strategy

基本模型:

<html class="dark">

组件通过:

dark:*

提供暗色样式。

这样主题状态只需要在应用根节点维护,而无需让每个业务组件自己维护 Theme State。


三十二、加密通信

管理后台与 BFF 之间采用:

AES-256-GCM
+
HMAC-SHA256

进行请求保护。

数据链路:

Admin SPA


Encrypt


HTTPS


Admin BFF


Verify / Decrypt

具体加密机制由 API Client 与 Crypto 模块统一处理,而业务页面无需感知底层实现。

原方案明确将 AES-256-GCM + HMAC-SHA256 封装为独立加密模块。


三十三、加密方案的安全边界

需要明确一个工程上的事实:

如果加密密钥需要随前端应用一起发布,那么它并不能被视为真正的服务端秘密。

因此:

Frontend Encryption

主要提供的是额外的数据保护,而不是替代:

HTTPS
+
Session Authentication
+
Server Authorization

真正的权限边界始终应该位于 BFF 服务端。

因此后台系统的安全模型应该理解为:

TLS
  +
Authentication
  +
Authorization
  +
Request Integrity

而不是单纯依赖前端加密。


三十四、数据同步模块

后台可以提供手动触发的数据同步能力:

Admin


Sync Task


External API


Transform


Storage

同步操作属于具有副作用的操作,因此需要:

Permission Check
+
Loading State
+
Error Handling
+
Audit

页面应该明确显示:

Syncing...
Success
Failed

而不是让用户点击按钮后无法判断任务状态。


三十五、配置管理与数据同步的区别

虽然两者都是管理操作,但语义不同。

配置管理

Admin

Configuration

Runtime Worker

目标是:

改变系统行为。

数据同步

Admin

External API

Storage

目标是:

更新系统数据。

因此在 UI 和权限模型中最好保持两个独立模块。


三十六、审计日志

后台系统中的关键操作应该可以追踪:

Who
What
When
Resource
Result

例如:

{
  "operator": "user",
  "action": "config.update",
  "resource": "worker",
  "timestamp": 1710000000000
}

建议将审计作为一个独立领域,而不是散落在各业务页面中。


三十七、前端状态管理边界

后台系统不应该把所有状态都塞进一个全局 Store。

可以按照状态生命周期划分:

Application State

├── Authentication State

├── UI State

├── Permission State

└── Server Data

例如:

Authentication State

currentUser
session
authenticated

UI State

sidebarOpen
theme
dialog

Server Data

users
metrics
auditLogs
biReport

Server Data 应该尽量保持与服务端数据模型一致,而不是复制出大量派生状态。


三十八、性能设计

后台系统的性能重点与用户端不同。

不应该单纯追求首屏几十毫秒,而应该重点关注:

操作响应时间
大数据查询
DOM 渲染数量
网络请求数量
Session 请求
缓存命中率

尤其是 BI 报表。


三十九、BI 大数据量保护

对于最大 100,000 条数据的查询,需要设置多层保护:

                BI Query

             ┌──────┴──────┐
             ▼             ▼
           Limit          Cache
             │             │
             └──────┬──────┘

                 Dataset

          ┌─────────┼─────────┐
          ▼         ▼         ▼
        Table     Chart      CSV
        100       Aggregate   Full

这样避免“大查询 = 大 DOM”。


四十、Session 轮询的成本

15 秒一次的 Session Verify 意味着:

1 user
≈ 4 requests / minute

因此如果后台用户规模增长,需要重新评估这种轮询模型。

可以考虑:

Polling

Longer TTL

Refresh Token

Event-driven / On-demand Verify

当前方案的风险分析也指出,持续轮询会增加 Worker 请求量,在并发用户较多时需要关注运行成本。


四十一、缓存策略的进一步演进

当前 BI 缓存属于客户端模块缓存:

Browser


Component Cache

如果未来出现大量用户查询相同报表,可以进一步增加服务端缓存:

Browser Cache


Admin BFF Cache


BI Service

甚至:

             ┌── Browser

Query ───────┼── BFF Cache

             └── BI

从而减少重复查询。


四十二、错误处理模型

前端应该统一处理:

Network Error
Timeout
401
403
404
500
Business Error

建议抽象:

interface ApiError {
  code: string;
  message: string;
  status?: number;
}

页面只关心:

成功
失败

而具体 HTTP 错误解析交给 API Client。


四十三、测试策略

测试应该覆盖三个层面。

1. Authentication

✓ 正确登录
✓ 错误密码
✓ Session 验证
✓ Session 过期
✓ 网络短暂失败
✓ 连续失败后登出

2. Authorization

✓ edit
✓ read
✓ none
✓ 无权限路由
✓ 无权限按钮
✓ 服务端 403

原方案也将登录、Session、路由守卫以及 edit/read/none 权限作为核心测试项。

3. Business

✓ User CRUD
✓ Sync
✓ Worker Config
✓ BI Query
✓ Monitor
✓ Audit
✓ Upload

四十四、响应式测试

至少需要覆盖:

Desktop
Tablet
Mobile

重点检查:

Sidebar
Dialog
Table
Card
Form
Chart
Navigation

例如:

Users
Desktop → Table
Mobile  → Card
Sidebar
Desktop → Fixed
Mobile  → Sheet
Dialog
Desktop → Centered
Mobile  → Full-width + Scroll

四十五、上线流程

前端应用采用:

Source


TypeScript Check


Vite Build


Static Assets


Cloudflare Edge

例如:

npm run build
npm run deploy

构建阶段至少应该保证:

TypeScript
+
Vite Build

全部通过。


四十六、生产环境配置

前端需要的配置主要分为:

Application Config

        ├── Worker Endpoint
        ├── BI Endpoint
        └── Client Runtime Config

敏感配置则应该重新审视是否真的需要进入浏览器。

原方案的生产环境依赖 Worker Endpoint、BI Endpoint 以及对应的客户端配置。

尤其需要注意:

任何进入 Vite 前端构建产物的变量,都应该默认视为客户端可见。

因此不能因为变量名叫:

SECRET
API_KEY
TOKEN

就认为它是秘密。

真正的服务端 Secret 应该只存在于服务端运行环境。


四十七、整体数据流

最终整个后台系统可以抽象为:

                         ┌──────────────┐
                         │   Admin SPA  │
                         └──────┬───────┘

               ┌────────────────┼────────────────┐
               │                │                │
               ▼                ▼                ▼
          Authentication   Authorization      UI State
               │                │
               └────────┬───────┘

                  API Client

          ┌─────────────┼──────────────┐
          ▼             ▼              ▼
       Admin BFF        BI             R2

    ┌─────┼─────┐
    ▼     ▼     ▼
 Users  Config  Sync
    │     │     │
    └─────┴─────┘


        Audit

四十八、架构分层总结

从职责上,可以最终形成:

┌───────────────────────────────────┐
│ Presentation                       │
│ Pages / Components / Responsive UI│
├───────────────────────────────────┤
│ Application                        │
│ Router / Auth / Permission / Hooks│
├───────────────────────────────────┤
│ Infrastructure                    │
│ API Client / Crypto / Cache       │
├───────────────────────────────────┤
│ Backend                            │
│ BFF / BI / Storage / External API │
└───────────────────────────────────┘

每一层都有明确职责:

负责
Presentation页面与交互
Application路由、认证、权限
InfrastructureAPI、加密、缓存
Backend数据与业务控制
Storage持久化

这样可以避免页面组件逐渐变成“大杂烩”。


四十九、架构演进方向

随着后台系统规模增加,可以从当前架构继续演进。

1. 权限模型

Resource + Level

RBAC

Role + Permission

进一步支持:

Role
 ├── Resource
 ├── Action
 └── Scope

2. Session

Polling

Refresh Token

Short-lived Access Token

降低长期轮询成本。


3. BI

Client Cache

BFF Cache

Query Cache

Pre-aggregation

针对高频报表进一步降低查询压力。


4. Audit

JSON / API

Structured Event

Queue

Log Storage

将审计从业务请求中进一步解耦。


5. 文件

Upload

Object Storage

CDN

Image Processing

形成独立的静态资源管理链路。


五十、总结

一个现代化运营后台真正需要解决的并不是“如何把页面做出来”,而是如何建立一套可持续演进的管理系统基础设施。

核心架构可以归纳为:

React
  +
TypeScript
  +
Route Guard
  +
Permission Model
  +
Session Management
  +
API Client
  +
Cloudflare Edge

其中最重要的设计原则有四个:

1. 权限前后端双重校验

前端控制体验,服务端控制安全边界。

2. 认证逻辑统一

登录、Session、401、权限刷新全部由统一认证层处理。

3. Server Data 与 UI State 分离

避免把服务端数据和界面状态混在一起。

4. 根据设备改变信息结构

移动端不是缩小版桌面后台,而应该使用:

Table → Card
Sidebar → Sheet
Multi-column → Single-column
Dialog → Full-width Scroll

最终,一个成熟的后台系统可以抽象成:

                ┌─────────────────┐
                │    Admin SPA    │
                └────────┬────────┘

              ┌──────────┴──────────┐
              │                     │
       Authentication          Authorization
              │                     │
              └──────────┬──────────┘

                    API Client

          ┌──────────────┼──────────────┐
          ▼              ▼              ▼
       Admin BFF         BI             R2

     ┌────┼─────┬─────┐
     ▼    ▼     ▼     ▼
   Users Config Sync Audit

这套设计适合中小型运营后台、内部管理平台、数据管理控制台以及基于 Cloudflare Edge 部署的轻量级 SaaS 管理端。

其核心价值不在于某一个具体 UI 框架,而在于建立:

路由 → 认证 → 权限 → API → 数据 → 审计

这一条清晰、统一且可演进的管理链路。

本页目录

一、背景二、设计目标1. 统一权限体系2. 统一认证3. 管理能力模块化4. 支持移动端5. 支持暗色模式6. Edge 部署三、整体架构四、技术栈五、应用目录设计六、路由设计七、路由守卫八、权限模型editreadnone九、权限与 UI十、权限的两层防线十一、认证体系十二、Session 保活十三、为什么不是一次失败就登出十四、认证状态机十五、首次使用流程十六、API Client十七、统一 HTTP 超时十八、401 统一处理十九、BI 报表设计二十、为什么查询数量与展示数量分离二十一、多字段筛选二十二、BI 缓存策略二十三、缓存边界二十四、CSV 导出二十五、响应式设计二十六、侧边栏二十七、列表双布局二十八、Dialog 移动端适配二十九、Worker 配置页面三十、监控数据可视化三十一、暗色模式三十二、加密通信三十三、加密方案的安全边界三十四、数据同步模块三十五、配置管理与数据同步的区别配置管理数据同步三十六、审计日志三十七、前端状态管理边界Authentication StateUI StateServer Data三十八、性能设计三十九、BI 大数据量保护四十、Session 轮询的成本四十一、缓存策略的进一步演进四十二、错误处理模型四十三、测试策略1. Authentication2. Authorization3. Business四十四、响应式测试四十五、上线流程四十六、生产环境配置四十七、整体数据流四十八、架构分层总结四十九、架构演进方向1. 权限模型2. Session3. BI4. Audit5. 文件五十、总结1. 权限前后端双重校验2. 认证逻辑统一3. Server Data 与 UI State 分离4. 根据设备改变信息结构