权限系统设计实战——从 RBAC 到 ABAC

55 阅读1分钟
  1. 前言

    • 为什么权限系统是后端绕不开的功能
    • 权限系统复杂的根源:用户多角色、多组织、多维度权限控制
  2. RBAC(基于角色的访问控制)

    • 核心模型:用户 → 角色 → 权限
    • 优点:简单直观
    • 缺点:粒度不够,灵活性差
  3. RBAC 的进阶优化

    • 角色分级(超级管理员、部门管理员、普通用户)
    • 数据权限(只能看到自己部门/自己创建的数据)
  4. ABAC(基于属性的访问控制)

    • 模型介绍:用户属性、资源属性、环境属性
    • 示例:用户标签为「付费会员」才能访问某 API
    • 对比 RBAC 的优缺点
  5. 权限系统落地方案

    • 数据库表设计:

      • 用户表、角色表、权限表、用户角色表、角色权限表
    • 鉴权实现:

      • Spring Security / Sa-Token
      • 自定义注解 @HasPermission("order:delete")
    • 接口拦截与统一返回

  6. 性能与扩展

    • 缓存用户权限(Redis)
    • 动态权限刷新(配置中心或后台管理 UI)
    • 大型系统中的分布式权限同步
  7. 总结

    • 小项目用 RBAC 足够
    • 大型平台推荐 RBAC + ABAC 混合
    • 工程经验:权限系统一定要“提前设计,逐步迭代”