feat(gateway): 真实鉴权片1 —— JWT 注册/登录 + 校验中间件(后端核心)
替掉"裸 X-User-ID 头当身份"的临时方案,落地无状态 JWT 鉴权后端: - internal/auth:JWT 签发/校验(HS256,密钥 env JWT_SECRET,仅接受 HMAC 防 alg 混淆) + bcrypt 密码哈希/校验。纯包,含单测。 - User 模型加 Name + PasswordHash(json:"-" 不外泄);store 加 CreateUser/GetUserByEmail/ GetUserByID(邮箱唯一冲突 → ErrUserExists)。 - handler/auth:POST /auth/register(建用户+签发)· POST /auth/login(校验+签发, 用户不存在与密码错同一文案防枚举)· GET /auth/me。 - middleware/auth:解析 Bearer JWT,校验通过把已验证 userID 注入上下文(非阻断)。 - userID(c) 改为优先取 JWT 注入的 uid,兜底 X-User-ID 头(前端尚未接登录,保持可用)。 验证: - 单测:JWT 签发/解析往返、过期拒绝、篡改/非法拒绝、bcrypt 哈希校验。 - 实跑(nats+pg+gateway):注册→token+user(无密码)、重复注册 409、错密码 401、 /auth/me 带 token 200 / 无 token 401;owner 隔离改用已验证 uid —— 带 token 建的库 匿名/伪造 header 都看不到(JWT 用户数据归于雪花 id,header 无法臆测)。 片 2 待做:前端登录页 + 存令牌带 Bearer + 处理 401 + 去掉 header 兜底 + 保护路由。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+2
-2
@@ -81,14 +81,14 @@
|
||||
- [x] DB 规约全库统一:雪花字符串 id + created/updated + 软删(gateway 各表 + mcp-go Profile)
|
||||
- [x] 文件主表,文档间关联用雪花 ID(弃用按名关联)
|
||||
- [x] 后端首批单测(19 纯逻辑用例:引擎/DSL/docx/报告)+ mcp-go 集成测试(Profile 迁移)
|
||||
- [ ] 🟡 owner 隔离靠 `X-User-ID` 头 —— 可用但**可伪造,无真实鉴权**
|
||||
- [ ] 🟡 真实鉴权(JWT):后端核心已完成 ✅(注册/登录签发 JWT + 校验中间件 + owner 取已验证 uid + 单测/实跑);**前端登录页 + 去掉 header 兜底 + 保护路由**待做(片 2)
|
||||
- [ ] 集成/前端测试(`runGraph` / `handleReport` 需 mock pool/tools/sink;前端无测试)
|
||||
|
||||
---
|
||||
|
||||
## 未实现的大块(路线图)
|
||||
|
||||
- [ ] **真实登录 / 鉴权 / 会话**(替掉裸 `X-User-ID`,最影响"能否交付他人用")
|
||||
- [ ] 🟡 **真实登录 / 鉴权**(JWT 后端核心 ✅;前端登录 + 强制鉴权 = 片 2 待做)
|
||||
- [ ] **代码解释器 + 安全沙箱**(mcp-py 核心能力,目前全桩)
|
||||
- [ ] **Harness 余下**:输出护栏(dispatcher token 发射层)(熔断降级 ✅、输入护栏 ✅、LLM 自动化评测 ✅ 已完成)
|
||||
- [ ] **长期记忆抽取** + external_api 工具
|
||||
|
||||
Reference in New Issue
Block a user