权限系统怎么设计提示词(RBAC 角色权限表结构、菜单与按钮权限、数据权限)

做管理后台、SaaS 或内部系统需要设计权限模块时用:让 AI 根据组织结构和权限需求设计 RBAC 模型,覆盖功能权限(菜单、按钮、接口)和数据权限(只能看本部门、只能看自己的),给出表结构、鉴权流程和常见越权漏洞的检查清单。

NNathaniel bigo··原创首发·AI 辅助撰写
通用大模型 对话模型通用
你是一名做过多个企业级后台权限系统的架构师。请帮我设计权限模块。

需求:
- 系统类型:[如内部运营后台、多租户 SaaS]
- 组织结构:[如公司、部门、小组三级;有没有多租户]
- 角色举例:[如超级管理员、部门经理、客服、财务]
- 需要控制的功能:[如菜单可见、按钮可点、接口可调用]
- 数据范围的要求:[数据范围的要求](例:客服只能看自己负责的客户、经理能看本部门及下级)
- 特殊需求:[如临时授权、权限审批、操作审计]
- 技术栈:[技术栈](例:Spring Boot + MySQL + Vue)

请输出:
1. 模型选择:基础 RBAC 是否够用;什么情况下需要角色继承、用户组、基于属性的规则(ABAC)作为补充;不要为了「完整」引入用不到的复杂度。
2. 功能权限设计:权限点的粒度与命名规则(如「模块:资源:操作」),菜单、按钮、接口三类权限如何对应;前端只负责显示隐藏,真正的拦截必须在后端。
3. 数据权限设计:数据范围的几种类型(全部、本部门、本部门及下级、仅本人、自定义),如何在查询中统一注入过滤条件,而不是在每个接口里手写。
4. 表结构:建表语句,包括用户、角色、权限、用户角色关联、角色权限关联、数据范围配置;多租户时每张表如何隔离。
5. 鉴权流程:一次请求从认证到功能鉴权、数据过滤的完整流程;权限缓存在哪里、修改权限后如何及时生效。
6. 管理功能:角色的增删改、权限分配界面的交互建议、防止管理员把自己锁在门外。
7. 安全检查清单:水平越权(改 URL 里的 ID 访问别人的数据)、垂直越权(普通用户调用管理员接口)、批量接口和导出接口的数据范围、权限修改本身的审计日志。

每个设计决定附一句理由。

高亮处换成你自己的内容:[如内部运营后台、多租户 SaaS]、[如公司、部门、小组三级;有没有多租户]、[如超级管理员、部门经理、客服、财务]、[如菜单可见、按钮可点、接口可调用]、[数据范围的要求]、[如临时授权、权限审批、操作审计]、[技术栈]

ChatGPT Plus 充值

已被复制 0 次

使用说明

怎么填变量:[数据范围的要求] 是权限系统里最容易被低估的部分。功能权限(能不能点这个按钮)大家都会想到,但「能看到哪些数据」往往到开发后期才发现需要,到时候每个查询都要返工。

常见坑:

  • 只在前端隐藏按钮,后端接口不做校验。任何人用接口调试工具都能直接调用。
  • 数据权限在每个接口里手写过滤条件,总会有遗漏,尤其是导出、统计、批量操作这些「非主流程」接口。
  • 权限放在登录令牌里且有效期很长,管理员撤销了某人的权限,对方在令牌过期前仍能操作。

追问技巧:设计完成后追问「列出 10 个具体的越权测试用例(包括导出接口和批量接口)」,交给测试同学执行。也可以追问「如果以后要支持某个用户临时代理另一个人的权限,现有设计要怎么扩展」。

示例输出

示例,仅供参考(节选)

权限点命名:customer:list:view、customer:detail:edit、order:refund:approve

sql
CREATE TABLE role_data_scope (
  role_id     BIGINT NOT NULL,
  resource    VARCHAR(64) NOT NULL,   -- 如 customer
  scope_type  VARCHAR(32) NOT NULL,   -- ALL / DEPT / DEPT_AND_CHILDREN / SELF / CUSTOM
  PRIMARY KEY (role_id, resource)
);
角色客户数据范围说明
客服SELF只看负责人是自己的客户
部门经理DEPT_AND_CHILDREN通过部门路径字段做前缀匹配查询
财务ALL(只读)没有编辑权限点

数据过滤:在数据访问层统一拦截查询,根据当前用户角色的 scope_type 拼接过滤条件;导出接口复用同一套逻辑。

同款作品

用这条提示词做出来的作品;原作者会因此获得积分

做同款

还没有同款,来做第一个。

Nathaniel 的更多内容

同主题

同模型

0 条评论

登录 后参与评论

还没有评论,来抢沙发~