权限系统设计
一、是什么
权限系统用于控制用户访问资源的能力。
二、模型分类
- RBAC(最常用)
用户 -> 角色 -> 权限
- ABAC
基于属性(用户、资源、环境)
三、前端实现
- 路由权限
{
path: '/admin',
meta: { role: 'admin' }
}
- 按钮权限
{hasPermission('edit') && <Button>编辑</Button>}
- 权限 Hook
function usePermission(code) {
return permissions.includes(code);
}
四、关键问题
- 前端权限 ≠ 安全(必须后端校验)
- 动态权限加载
- 权限缓存
五、最佳实践
- 权限数据统一管理(Store)
- 菜单 + 路由 + 按钮统一模型
- 权限码设计规范化