Skip to content

Commit 4d51ba1

Browse files
committed
feat:登录文档优化
1 parent 8019d9b commit 4d51ba1

1 file changed

Lines changed: 43 additions & 87 deletions

File tree

docs/advanced-features/auth-plugin.md

Lines changed: 43 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -4,103 +4,59 @@
44

55
本文档介绍 TinyEngine 低代码平台新增的用户登录认证与权限控制系统。该系统提供了完整的用户注册、登录、密码找回功能,并实现了基于 Token 的 API 请求认证机制。
66

7-
## 一、界面操作
7+
## 一、功能特性
88

9-
1. 登录界面:包含登录、注册、忘记密码、注册成功</br>
10-
![登录](./imgs/auth1.gif)
11-
2. 用户配置插件</br>
12-
![用户配置](./imgs/auth2.gif)
13-
3. 应用中心和模板中心的用户组织切换</br>
14-
![应用中心](./imgs/auth3.gif)
15-
16-
## 二、核心模块功能
17-
18-
1. HTTP 拦截器模块
19-
20-
- 位置:packages/common/composable/http/index.ts
21-
- 作用:拦截所有 API 请求,进行认证检查和 Token 管理
22-
- 关键特性:</br>
23-
1. 请求前检查登录状态</br>
24-
2. 自动为认证请求添加 Authorization 头部</br>
25-
3. 统一处理认证错误</br>
26-
4. 支持请求取消机制</br>
27-
5. 环境适配(开发/生产环境行为不同)
28-
29-
2. 全局状态管理模块
30-
31-
- 位置:packages/common/composable/defaultGlobalService.ts
32-
- 作用:管理用户登录状态、用户信息和租户上下文
33-
- 关键 API:</br>
34-
1. getLoginStatus():获取当前登录状态</br>
35-
2. setNeedToLogin():设置登录需求状态</br>
36-
3. getUserInfo()/setUserInfo():用户信息管理</br>
37-
4. fetchUserInfo():从 API 获取用户信息</br>
38-
5. setTenantInfo():设置租户上下文
39-
40-
3. 登录组件模块
41-
42-
- 位置:packages/design-core/src/login/
43-
- 组件结构:</br>
44-
1. Index.vue:登录页面容器</br>
45-
2. Login.vue:登录表单</br>
46-
3. Register.vue:注册表单</br>
47-
4. ForgotPassword.vue:密码找回</br>
48-
5. RegisterSuccess.vue:注册成功提示</br>
49-
6. useLogin.ts:共享状态和逻辑
50-
51-
4. 用户工具栏模块
52-
53-
- 位置:packages/toolbars/user/
54-
- 功能:显示用户信息、组织管理和退出登录
55-
- 特性:</br>
56-
1. 显示当前用户和头像</br>
57-
2. 组织列表和切换功能</br>
58-
3. 创建新组织</br>
59-
4. 退出登录操作</br>
60-
61-
## 三、关键技术特性
62-
63-
1. 请求取消机制:</br>
64-
使用 AbortController 实现请求取消,确保未登录状态下不会发出不必要的 API 请求。当检测到用户未登录时,自动取消所有非白名单请求.</br>
65-
白名单接口(无需认证):
66-
```js
67-
// 登录相关接口
68-
'/platform-center/api/user/login'
69-
'/platform-center/api/user/register'
70-
'/platform-center/api/user/forgot-password'
71-
'/platform-center/api/user/me'
72-
'/platform-center/api/user/tenant'
73-
// AI 相关接口
74-
'app-center/api/chat/completions'
75-
'app-center/api/ai/chat'
76-
'app-center/api/ai/search'
77-
```
78-
2. 密码验证策略:</br>
79-
密码必须同时满足以下所有条件:
80-
81-
- 密码长度:8-20 个字符
82-
- 必须包含大写字母(A-Z)
83-
- 必须包含小写字母(a-z)
84-
- 必须包含数字(0-9)
85-
- 必须包含特殊字符:!@#$%^&\*()\_+-=[};":|,'<>?。
86-
- 不能有 3 个及以上连续相同字符
87-
88-
3. 环境配置系统:</br>
9+
1. 相关配置</br>
8910

9011
- 开发环境(MODE=dev):
91-
1. 启动项目是通过 **pnpm dev:withAuth** 命令开启登录,**pnpm dev** 命令默认不开启
12+
1. 启动项目通过 **pnpm dev:withAuth** 命令开启登录,**pnpm dev** 命令默认不开启
9213
2. 在 packages/design-core/registry.js 配置
9314
```js
9415
const isDevelopEnv = import.meta.env.MODE?.includes('dev')
9516
const useAuth = import.meta.env.VITE_AUTH === 'true'
9617
// 通过设置enableLogin为true启动登录
9718
enableLogin: useAuth || !isDevelopEnv
9819
```
99-
- 生产环境:启用完成登录认证
20+
- 生产环境:默认开启登录认证。
21+
22+
2. 请求拦截机制</br>
23+
若登录配置为 true,会使用属于登录功能的请求/响应拦截器。
24+
25+
- 请求拦截与状态管理:</br>
26+
a. 全局未授权标记:通过 isUnauthorized 变量标记是否已发现未授权状态。</br>
27+
b. 请求计数:使用 requestCount 记录当前请求数量。</br>
28+
c. 请求取消机制:使用 AbortController 管理进行中的请求,支持批量取消。
29+
30+
- 白名单机制:包含登录、注册、忘记密码、用户信息等接口的 whiteList 放行。
31+
32+
3. Token 处理:从 localStorage 读取 engineToken 对非白名单接口自动添加 Authorization 请求头。
33+
34+
4. 并发请求管理
35+
```javascript
36+
// 使用 Map 存储所有请求的 AbortController
37+
const abortControllers = new Map()
38+
// 支持取消所有进行中的请求
39+
const abortAllRequests = (message = '用户未登录,请求已取消')
40+
```
41+
5. 认证错误处理</br>
42+
43+
- 错误码识别:监控特定的登录错误码(CM004CM005 等)</br>
44+
- 自动跳转登录:发现认证错误时自动触发登录流程</br>
45+
- 请求取消:未授权状态下自动取消后续请求
10046

101-
4. 多租户支持</br>
47+
6. 多租户支持</br>
10248

103-
- 用户可属于多个组织
104-
- 动态切换组织上下文
105-
- 组织间数据隔离
49+
- 用户可以属于多个组织
50+
- 组织间进行了数据隔离
10651
- URL 参数标识当前应用,当 URL 没有应用 id,会跳转到应用中心
52+
53+
## 二、界面操作
54+
55+
1. 注册账号 - 输入账号、密码、确认密码 - 注册成功获取【账号恢复代码】</br>
56+
忘记密码 - 输入账号、账号恢复代码、新密码、确认密码 - 新密码设置成功</br>
57+
登录 - 输入账号、密码 - 登录成功进入设计器</br>
58+
![登录](./imgs/auth1.gif)
59+
2. 登录成功后进入设计器,右上角新增用户配置插件,展示用户默认头像、用户名,可以新建组织和切换组织,退出登录的出口也在这里;切换组织后,会默认进入应用中心去选择应用。</br>
60+
![用户配置](./imgs/auth2.gif)
61+
3. 应用中心可以创建属于该组织下的应用,点击【开发应用】,进入该应用进行开发。</br>
62+
![应用中心](./imgs/auth3.gif)

0 commit comments

Comments
 (0)