操作被拒绝,因为禁止
Symptom
您已登录 — 读取操作正常 — 但某个操作返回 403。或者每个请求都返回 401,仪表板将您重定向到登录页面。这是两个不同的问题,区别在于状态码。
Diagnose
- 401 还是 403? 401 表示平台不知道您是谁:令牌缺失、格式错误或已过期。403 表示平台确切知道您是谁,但答案仍然是否定的。
- 对于来自 API 的 401 错误: 检查请求是否携带了
Authorization: Bearer <token>,并且令牌是否未过期。odysseus auth whoami和odysseus auth status都会回答此问题。 - 对于 403 错误:您正在以哪个角色运行? 运行和构建是故意分开的权限——请参阅代理程序主体无法执行的操作,该文档为自动调用者说明了相同的分离。
- 资源是否在您的租户中? 每条记录都只属于一个租户,访问另一个租户记录的请求会被拒绝,而不是返回空结果。这种拒绝看起来像是一个权限问题,并且是一个隔离边界——请参阅多租户与隔离。

Resolve
- 401: 请重新登录,或刷新令牌。
odysseus auth login会重新签发一个。 - 403,针对您的角色未携带的操作: 请向您租户的管理员申请相应权限,并说明具体的操作而非角色——角色之间的区别在于它们能做什么,而非等级高低。
- 403,针对另一个租户的记录: 此处无法修复;该记录不属于您。
Prevent
为自动化调用者提供一个仅拥有其工作所需权限的主体。一个同时拥有构建权限和运行权限的主体会悄然破坏权限分离,且没有任何报告机制。