Skip to content

权限与作用域

三维度权限模型

系统权限由三个维度组成:资源 : 操作 : 作用域

资源

资源说明
user用户
characterAI 角色
user_character_config用户角色配置
conversation对话
project项目
canvas画布
file文件
skill技能
node_group节点组
favorite收藏
generator生成器
generation生成任务
bundle充值套餐
payment充值交易
transaction_log交易流水
invite_code邀请码
...其他系统资源

操作

操作说明
create创建
read读取
update修改
delete删除

作用域

作用域说明使用者
own自有资源所有用户
public公开资源所有用户(只读)
all全部资源仅管理员

scope 查询参数

列表端点通过 scope 查询参数控制返回范围:

GET /api/v1/characters?scope=own      # 只返回自己创建的角色
GET /api/v1/characters?scope=public   # 返回所有公开角色
GET /api/v1/characters?scope=all      # 返回所有角色(仅管理员)

默认值

大部分端点默认 scope=own

权限检查

操作scope=ownscope=publicscope=all
列表查询自有资源公开资源全部资源(管理员)
单个查询自有公开任意(管理员)
创建当前用户为所有者
修改仅所有者管理员
删除仅所有者管理员

公开资源

资源通过 visibility 字段控制公开状态:

  • visibility: "private"(默认)— 仅创建者可访问
  • visibility: "public" — 所有用户可读(scope=public),但只有创建者可修改/删除

管理员权限

管理员拥有通配符权限,可以:

  • 通过 scope=all 查看和管理所有用户的资源
  • 修改其他用户的信息和权限
  • 访问管理员专属端点(服务器配置、JWT 密钥等)
  • 修改和删除其他用户的资源

常见权限错误

场景状态码说明
Token 缺失或无效401需要重新登录
普通用户使用 scope=all403需要管理员权限
访问他人的私有资源404出于安全考虑,返回 404 而非 403
修改他人的公开资源403公开资源只有创建者可修改
账号被封禁403即使 Token 有效也被拒绝

安全说明

系统对不存在的资源和无权限访问的资源统一返回 404,避免泄露资源存在性。测试时需注意区分"资源真的不存在"和"无权限访问"两种情况。

测试要点

测试建议

  1. scope 交叉测试:每个列表端点分别测试 own/public/all 三种 scope
  2. 404 统一性:无权限和不存在应返回相同的 404
  3. 公开资源只读:非创建者只能 GET 公开资源,PATCH/DELETE 应被拒绝
  4. 管理员全权:管理员应能操作所有用户的资源
  5. 角色降权:移除管理员权限后应立即失去管理能力
  6. 新注册用户:默认权限是否正确(应有 own 和 public 访问权)

狐线 AI Pro 外部测试文档