权限系统设计

一、是什么

权限系统用于控制用户访问资源的能力。

二、模型分类

  1. RBAC(最常用)
用户 -> 角色 -> 权限
  1. ABAC

基于属性(用户、资源、环境)

三、前端实现

  1. 路由权限
{
  path: '/admin',
  meta: { role: 'admin' }
}
  1. 按钮权限
{hasPermission('edit') && <Button>编辑</Button>}
  1. 权限 Hook
function usePermission(code) {
  return permissions.includes(code);
}

四、关键问题

  • 前端权限 ≠ 安全(必须后端校验)
  • 动态权限加载
  • 权限缓存

五、最佳实践

  • 权限数据统一管理(Store)
  • 菜单 + 路由 + 按钮统一模型
  • 权限码设计规范化