概述
/actions/:object/:action 路由执行动作 body 沙箱时,context 从不解析会话用户,ctx.user 恒为 { id: 'system' }(无 id、无 roles)。导致动作 body 内无法按操作者身份/业务角色分支,也无法做服务端强制的归属校验。
定位
packages/runtime/src/http-dispatcher.ts:3271-3272 —— 构建动作执行 context 时独漏ec?.userId 回退。- 对照同文件其它入口均正确解析会话用户:MCP 路径
:822、record-change 触发 :2972 都带 ec.userId。 - 说明这是单点遗漏/回归,而非有意设计。
期望
动作 body context 解析会话用户,至少提供 ctx.user.id(与 MCP/record-change 一致),并暴露业务角色。
补充
原 issue 还称「record-change flow 也拿不到角色」——经核查该分支能带 ec.roles,此子主张不成立,本 issue 只针对 action body。
来源(项目 dogfood):steedos-labs/os-tianshun-mtc#36
概述
/actions/:object/:action路由执行动作 body 沙箱时,context 从不解析会话用户,ctx.user恒为{ id: 'system' }(无 id、无 roles)。导致动作 body 内无法按操作者身份/业务角色分支,也无法做服务端强制的归属校验。定位
packages/runtime/src/http-dispatcher.ts:3271-3272—— 构建动作执行 context 时独漏ec?.userId回退。:822、record-change 触发:2972都带ec.userId。期望
动作 body context 解析会话用户,至少提供
ctx.user.id(与 MCP/record-change 一致),并暴露业务角色。补充
原 issue 还称「record-change flow 也拿不到角色」——经核查该分支能带
ec.roles,此子主张不成立,本 issue 只针对 action body。来源(项目 dogfood):steedos-labs/os-tianshun-mtc#36