feat: 实现登录、会话令牌、握手与顶号
EOF
This commit is contained in:
@@ -276,6 +276,43 @@
|
||||
- 备选方案:N2 暴露回调给 M 注册。
|
||||
- 影响:接线后 M 需订阅或包装该钩子;当前接口可后续加 `OnPublishDropped` 回调字段。
|
||||
|
||||
### N3 2026-09-30
|
||||
|
||||
1. **仍未接线 `cmd/nixmsg`**
|
||||
- 原条款:serve 最终应挂上真实 Authenticator / Session。
|
||||
- 实际做法:交付 `broker.Login`、`broker.Session` 与 F02 测试;不改 `cmd/nixmsg`/`wire.go`。
|
||||
- 原因:与总控/其他线并行改 wire 冲突;N1/N2 已约定合并时接线。
|
||||
- 备选方案:本分支改 wire(与隔离指令冲突)。
|
||||
- 影响:进程默认仍 RejectAuthenticator,需接线注入 `Login`+`Session`。
|
||||
|
||||
2. **`session_hash` 存十六进制文本**
|
||||
- 原条款:库中存 SHA-256;列为 TEXT,未规定编码。
|
||||
- 实际做法:存 32 字节哈希的小写 hex(与后台 API 令牌存法一致)。
|
||||
- 原因:TEXT 列无法直接存原始字节;hex 便于排查。
|
||||
- 备选方案:BLOB 列或 base64。
|
||||
- 影响:其他线读写 `session_hash` 需按 hex 编解码。
|
||||
|
||||
3. **上下线通知走 `PresenceSink` + port 回调**
|
||||
- 原条款:写 `online_since`/`offline_since` 并通知;通过现有 port 接口供身份线订阅。
|
||||
- 实际做法:N3 自己写时间戳;可选注入 `PresenceSink`(对齐 `presence.Service.SetOnline/SetOffline`);并继续调用 `OnHandshakeComplete`/`OnDisconnect`。旧连接断开用连接代号判断,只有当时仍是 current 才标离线。
|
||||
- 原因:I3 尚未合入,不能依赖具体 presence 实现;双通道便于接线。
|
||||
- 备选方案:只靠 port、由 I 线写库(与「N3 写 online_since」字面不符)。
|
||||
- 影响:接线时避免 I 线重复写同一时间戳即可。
|
||||
|
||||
4. **InlineClient 的 `OnPublish` 必须放行**
|
||||
- 原条款:客户端上行 `OnPublish` 返回 `CodeSuccessIgnore`。
|
||||
- 实际做法:`cl.Net.Inline` 时原样返回,不 Ignore,否则 `PublishDown` 无法送达订阅者。
|
||||
- 原因:mochi `Publish` 经 InlineClient `InjectPacket` 再进 `OnPublish`。
|
||||
- 备选方案:不用 InlineClient,改直接 `publishToClient`(偏离文档装配)。
|
||||
- 影响:N2 既有 PublishDown 测试此前未读回包,此缺陷在 N3 才暴露并修复。
|
||||
|
||||
5. **管理员踢线类入口挂在 `Session`**
|
||||
- 原条款:停用/删除/重置密码先 fatal 再断开;踢下线只断开。
|
||||
- 实际做法:`Session.Disable`/`Deleted`/`ResetPassword`/`Kick` 可调用;管理 HTTP 未接。
|
||||
- 原因:A2 管理接口尚未接线。
|
||||
- 备选方案:放到 `internal/admin`(超出 N 目录)。
|
||||
- 影响:A/I 接线时调用这些方法即可。
|
||||
|
||||
## 消息 M
|
||||
|
||||
### M1 2026-09-30
|
||||
|
||||
Reference in New Issue
Block a user