后端管理系统的项目权限

0 阅读1分钟

1. 整体架构

  • 采用RBAC模型,用户登录后,后端基于角色返回权限数据
  • 权限数据包含两部分:可访问的菜单列表 + 页面按钮的操作权限

注:RBAC(Role-Based Access Control,基于角色的访问控制)是业界最广泛使用的权限管理模型。核心思想是:权限不直接授予用户,而是通过“角色”作为中间层

2. 菜单权限实现

  • 后端返回结构化的菜单数据(包含路径、标题、图标等)
  • 前端动态生成路由表和侧边栏菜单

3. 按钮权限实现

  • 后端返回类似这样的数据结构:
      childResource:[{
          id:'',
          pageName: '数据概览',
          pageType: '',
          pageURI: '/manage/overview',
          childResource: [
              {
                  id:'',
                  pageName: '新增',
                  pageType: '3'
              }, {
                  id:'',
                  pageName: '编辑',
                  pageType: '3'
              }, {
                  id:'',
                  pageName: '查询',
                  pageType: '3'
              }
          ]
    
      }]
    
  • 前端通过自定义指令(如v-permission)或组件方式控制按钮显隐
  • 页面加载时,从当前路由获取页面标识,匹配对应的权限数组

4. 权限拦截

  • 路由守卫中做权限校验,防止直接输入URL越权访问
  • 如果用户尝试无权限的页面,跳转到403或提示无权限”

扩展

  • 权限缓存:将权限数据存入Vuex/Pinia和localStorage,避免每次刷新重新请求

  • 动态路由:根据权限动态添加路由,而不是一次性挂载所有路由

  • 安全性考虑:前后端双重校验,前端控制UI展示,后端真正拦截请求

  • 性能优化:权限判断逻辑抽离成工具函数,避免重复计算