You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中创建用户组并为用户分配权限

电商后台的权限系统目前行业通用的成熟方案是基于RBAC(基于角色的访问控制,也就是你说的用户组)实现,具体落地可以按下面的规范来:

1. 底层数据模型设计规范
  • 采用标准三层RBAC结构,不要做多余的复杂设计:权限点 → 用户组(角色) → 员工用户,支持单个用户绑定多个用户组,权限取所有绑定组的并集即可,逻辑简单容错性高。
  • 权限点拆分为两类单独标识,每个权限点分配唯一的字符串标识符存在权限表:
    • 页面权限:控制用户是否能进入对应后台菜单,比如标识定义为page:product对应商品管理页
    • 操作权限:控制用户在页面内可执行的操作,比如标识定义为action:product:add对应新增商品操作、action:order:export对应订单导出操作
  • 建三张中间关联表即可完成逻辑映射:用户组-权限关联表、用户-用户组关联表,不需要额外做角色继承等逻辑,除非客户明确提出多级部门权限管理需求。
2. 后台界面功能实现规范

2.1 用户组(角色)管理页

  • 列表页展示所有用户组的名称、描述、状态、关联用户数,支持新增、编辑、删除、查看关联用户操作:
    删除操作必须加限制:如果该用户组下还有绑定的员工用户,禁止直接删除,需提示先解绑所有关联用户或转移到其他用户组,避免出现无归属的权限异常
  • 新增/编辑用户组弹窗:除了基础的组名、备注输入外,用分模块的复选框组/树形控件展示所有权限点,支持按模块全选/反选,权限选项的文案要给非技术用户看的友好,不要展示技术标识,直接写「可访问商品管理页」、「可执行商品新增操作」即可。

2.2 原有员工用户管理页调整

  • 列表新增「所属用户组」展示列,编辑用户时增加用户组分配选项,支持多选,不保留单独给单个用户分配权限的入口,所有权限统一通过用户组继承,避免后期权限管理混乱找不到权限来源。

2.3 可选补充操作日志

所有权限相关操作(创建/修改/删除用户组、修改用户绑定的用户组、修改用户组权限配置)都留操作日志,记录操作人、操作时间、变更前后内容,电商后台涉及订单、商品等核心数据,出问题可溯源。

3. 后端权限校验规范
  • 绝对不能只做前端的菜单隐藏、按钮置灰逻辑,前端校验只能降低用户误操作概率,所有后端接口必须加权限校验:用户请求接口时,先拉取该用户绑定的所有用户组对应的权限集合,校验是否包含当前接口对应的权限标识,无权限直接返回403。
  • 用缓存存用户权限集合(比如Redis),避免每次请求都查库影响性能,用户组权限变更、用户绑定关系变更时,同步清除对应用户的权限缓存即可。
  • 单独配置超级管理员规则:默认拥有所有权限,不需要走用户组分配逻辑,避免误操作把所有账号的权限配置页权限关了导致锁死后台。
4. 常见避坑点
  • 不要过度设计:没有明确需求就不要做用户组多级继承、自定义用户特殊权限这类功能,后期维护排查权限问题的成本会非常高。
  • 敏感操作加二次校验:修改超级管理员权限、删除正在使用的用户组这类操作,除了弹窗确认外可以加操作密码校验,避免误操作。
  • 不要硬编码权限判断:所有权限标识、权限映射都存在数据库,后续新增功能模块时只需要往权限表插入新的权限点数据即可,不需要改动权限校验的核心逻辑。

内容的提问来源于stack exchange,提问作者Arvind kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:09:01