图_11鉴权与会话管理
原生 Excalidraw 可编辑画布,基于 SuperMew-0.1.0。请使用 Obsidian 的 Excalidraw 视图打开。
所属模块: M2 接口与鉴权;会话操作属于 M3。总图与详图使用相同模块编号;画布右侧也包含以下读图说明。
接口层组成
- app.py 装配环境、启动建表、中间件、业务路由和可选静态托管。
- router 注册 auth/sessions/chat/documents;Pydantic 与 Depends 承担校验和依赖注入。
身份
- 注册/登录签发 JWT;后续按 sub 查询当前 DB User。
- 管理员权限读取 DB role,不直接信任 JWT role。
会话
- 前端新建 session_id 后,第一次聊天 save 才建 PG 会话。
- 所有会话查询用当前用户身份限定;删除级联清消息和缓存。
边界
- 没有创建会话 API、token 刷新表或服务器 logout 状态。
- 会话隔离不意味着每人一套知识库。
源码对应
backend/infra/auth.py:get_current_user()backend/infra/auth.py:resolve_role()backend/api/routes/auth.pybackend/api/routes/sessions.pybackend/chat/storage.py:delete_session()frontend/src/stores/chat.tsfrontend/src/stores/auth.ts
Excalidraw Data
Text Elements
11 接口层、鉴权与会话管理 ^02eb034a
原版真实分支与时序;全部图形、文字与连线均为可编辑元素。 ^67ef0b29
M2 接口与鉴权;会话操作属于 M3 · 对应总图 01 ^0b2c167f
M2 接口层组成 · 装配与运行时职责分开 ^71ab6cff
app.py 应用装配 load_env / 启动 init_db CORS / no-cache 可选 frontend/dist ^c00d1129
api/router.py 注册四组业务路由 auth / sessions chat / documents ^d6d3e9e0
请求与响应边界 Pydantic 请求/响应模型 Depends 鉴权与 DB 会话 JSON 或 StreamingResponse ^019b195d
会话业务 · 以当前用户为查询边界 ^bef30afe
身份建立与请求鉴权 ^17131698
注册 username / password 可选 admin + 邀请码 ^45a849c2
resolve_role PBKDF2 哈希 → PG User ^27e9c250
登录 username / password ^6a609a20
查 PG User / 验证哈希 ^738c0323
签发 JWT · sub / role / exp 前端 localStorage 保存 ^63d4766a
Bearer 请求业务 API ^4c8ab776
解码 JWT / 校验 exp 取 sub 再查 PG User ^970ddb7f
业务权限 ^dddf9050
chat / sessions / auth-me ^71d8ac23
documents / jobs 管理 ^2dd82cb5
401 ^d2e6fc0d
403 ^a42607d2
前端新建本地 session_id 不发送创建会话 API ^96984270
第一次聊天 storage.save 查 username → users.id ^c2cc7845
按 user_id + session_id 查找 不存在才创建 ChatSession ^8351f0ed
消息关联 session.id 整数 PK 不是外部 session_id ^99a568df
GET sessions / sessions-id Redis 优先,PG 回源 ^8471dd12
DELETE sessions-id 找本用户会话 → ORM 删除 ^d6105d6c
PG 删除会话及消息 commit 后清两类 Redis key ^792b6e7d
404 ^d1578805
登录用户 ^39fb4e55
DB role=admin ^82cfff37
无效 / 过期 / 用户不存在 ^63abc058
非管理员访问文档 ^5bb8d55e
未找到 ^dd6f62e2
读图说明 · M2 接口与鉴权 ^d41f1acb
接口层组成 ^24f079bb
• app.py 装配环境、启动建表、中间件、业务路 由和可选静态托管。 ^553766cd
• router 注册 auth/sessions/chat/documents; Pydantic 与 Depends 承担校验和依赖注入。 ^fc7f3e0e
身份 ^54e70d3d
• 注册/登录签发 JWT;后续按 sub 查询当前 DB User。 ^f6569e1b
• 管理员权限读取 DB role,不直接信任 JWT role。 ^d2a1287a
会话 ^91096f08
• 前端新建 session_id 后,第一次聊天 save 才 建 PG 会话。 ^6fe0548a
• 所有会话查询用当前用户身份限定;删除级联清 消息和缓存。 ^9b7a4a8f
边界 ^5b74f5d6
• 没有创建会话 API、token 刷新表或服务器 logout 状态。 ^441cfa9b
• 会话隔离不意味着每人一套知识库。 ^b76e69ee
Element Links
0b2c167f: [[图_1项目设计]]
%%
Drawing
1 | N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQAswYKDXgB6MSgw4CxAHSp6AWzJJMMJTEZgaCANqg8CEADZ0AVgBGAM3SoALKsixj+GKjDpGAc3WrkCADMAAzkEAgAjCahIER4YPyRwYHm5Pww2N6CrNHkXr58MTRg+PQA1jAAwvSY9PjGAMSolrjmMBGqlnZl3qWcjLjVtfWIDdYAHLbWqKrW2JiYAMqQfog |
%%