-
前言
- 为什么权限系统是后端绕不开的功能
- 权限系统复杂的根源:用户多角色、多组织、多维度权限控制
-
RBAC(基于角色的访问控制)
- 核心模型:用户 → 角色 → 权限
- 优点:简单直观
- 缺点:粒度不够,灵活性差
-
RBAC 的进阶优化
- 角色分级(超级管理员、部门管理员、普通用户)
- 数据权限(只能看到自己部门/自己创建的数据)
-
ABAC(基于属性的访问控制)
- 模型介绍:用户属性、资源属性、环境属性
- 示例:用户标签为「付费会员」才能访问某 API
- 对比 RBAC 的优缺点
-
权限系统落地方案
-
数据库表设计:
- 用户表、角色表、权限表、用户角色表、角色权限表
-
鉴权实现:
- Spring Security / Sa-Token
- 自定义注解
@HasPermission("order:delete")
-
接口拦截与统一返回
-
-
性能与扩展
- 缓存用户权限(Redis)
- 动态权限刷新(配置中心或后台管理 UI)
- 大型系统中的分布式权限同步
-
总结
- 小项目用 RBAC 足够
- 大型平台推荐 RBAC + ABAC 混合
- 工程经验:权限系统一定要“提前设计,逐步迭代”