不可信输入
- 原始 Cookie、客户端 x-tenant-id
- 按钮是否显示、Layout 是否渲染
- matcher 是否命中、入口 URL 长什么样
把一次请求推过两道防线:Proxy 只做快速、乐观的登录提示检查;真正的会话、租户关系与资源权限,必须在 Route Handler、Server Action 或 DAL 里重新验证。
改变任一条件,管线会同步重算;“运行请求”用于重播状态变化。
客户端 Header 不作身份证明。 即使请求自己写了租户 ID,也要删除或忽略;租户上下文来自已登记 Host / 路由,归属结论来自已验证会话与数据库 membership。
可以绕过按钮、客户端校验与 Layout;若 matcher 命中,Proxy 仍只是第一道筛选,服务端入口继续权威授权。
只代表 Proxy 没运行,不代表自动放行。Route Handler、Server Action 与 DAL 仍按会话 → 租户 → 资源逐层检查。
安全判断不是“看见一个字段”,而是验证这个字段从哪里来、能证明到哪一层。
Proxy:只验签 Hint、做登录跳转或租户 rewrite,不查询 Atlas 项目权限。
下游:页面、Route Handler、Server Action 与直接请求都调用同一权威 guard。
Layout:可以隐藏导航或表单,但不能保护接口,也不能替代入口授权。