API密钥权限超越了指定角色的权限

* 描述问题

当前测试创建了一个角色,该角色只授予了一张表的操作权限,然后在创建API密钥时指定角色为刚创建的这个角色,然后通过该密钥可以对其他所有表进行操作。

* 运行环境

  • NocoBase 版本:v1.4.10
  • 数据库种类与版本: MySQL 8.x
  • 操作系统:Windows 11
    -浏览器及版本: Edge
  • 部署方式:Docker
  • Docker 镜像版本:nocobase/nocobase:latest
  • NodeJS 版本:

如何重现

  1. 创建一个角色Test
  2. 通用操作权限中所有权限都不勾
  3. 任意找一个表,假设为用户表,单独配置 允许查看、添加、删除、编辑,其余表权限完全不动
  4. 通过API文档去list除用户以外的表,假设为角色表,均能正常得到数据
  5. 超越了指定的角色允许的权限范围

预期行为

API的调用权限应与其指定的角色权限相匹配

截图

日志

可以使用工具如postman+api key去调用测试,不用API文档去使用, 这个时候使用会涉及已经登录的会话权限

@hongboji 效果是一样的

你好,初步测试未能复现你所描述的问题。
可以调用 /api/roles:check 接口确认一下 API key 所使用的角色和对应权限。
如果问题依然存在,方便的话麻烦申请一个在线 demo 并复现一下。

  • 不好意思,问题找到了
  • 原因是我在API文档里面测试填的 api-key在切换了页面之后丢失了,而API文档会自动携带当前登录者的api-key,我在后面的测试中没有发现 api-key的变化,误以为还是我填的那个 api-key,抱歉!