后台管理系统权限问题必答

权限管理整个流程 

1.组件模块部分.
用户管理:所有帐号的增删改查,为该帐号分配可选权限角色信息
角色管理:角色信息的增删改查,为该角色分配具体权限数据
权限管理:对应路由需求的访问权


权限管理分三部分


- api请求定义:
  - 主要后端处理,
  - 前端:响应拦截统一错误处理


- 路由
  1. 将路由分为二大块
     - 静态路由:不需要访问权限的路由
     - 动态路由:需要权限访问的路由
     - 默认只有静态路由,不需要访问权限的路由不保留404的处理方式


  2. 在获取到用户信息后
     1. 打印当前用户具体信息.找到该用户权限相关信息.
     2. 通过和动态路由循环匹配出对应的页面的路由信息,
     3. 通过addRoutes动态添加到默认路由上
        1. 出现了一些坑点
             刚添加的路由不能立马使用需要再经过一次导航守卫
             解决方式:

         在导航守卫中next(to.fullPath)
         404问题(刚添加的不能立马使用,如果静态路由中包含*匹配404,就会直接跳转到404)
             解决方式:

             将静态路由中之前删掉的404,通过addRoutes和权限路由一起添加到最后


3. - 菜单问题
              早期 菜单使用this.$router.options.routes,这是原始自动生成菜单的代码.

              vue-element-admin 后台模板中早就定义的.用于生成菜单.
              该值不是响应式的,造成菜单没有对应更新
                 解决方式


               通过vuex存储路由配制数据(和路由配制保持同步)
               使用vuex中的路由配制路由实现响应式

                  首先在指定的vuex中首先匹配无权限的路由.

                   然后把循环匹配后的路由和404一起添加进去.

                  最后将菜单中的this.$router.options.routes 修改成当前路由对应的state中的值


              退出切换帐号上一个帐号addRoutes添加的路由还能使用
              解决方式:退出时重置路由/或者刷新页面


按钮
   通过自定义指令当用户信息的按钮权限信息包含当前按钮标识 时正常显示,不包含就不显示
   v-if/v-show    mixin也可以

具体代码 

在vuex登录成功时获取到个人用户信息后通过addroutes添加路由

    // 1.分离需要权限的路由
    // 2.删除404.不需要权限的路由不用404
    // 3.导入这个文件
    // 4.循环这个文件中自定义的名字于登录获取的个人信息中的roles.menus匹配是否包裹
    // 5.匹配完毕以后使用addRoutes添加到默认的不需要权限的路由中.
    // 6.因为addRoutes需要再执行一次导航守卫.将next() 修改为to.fullPath


    import mourouter from '@/router/mouder/index'
    // mourouter 是抽离出来需要权限访问的路由

    const Array = mourouter.filter((item) => {
      return res.data.roles.menus.includes(item.meta.name)
    })
    console.log(Array, 123)
    Router.addRoutes([...Array, { path: '*', redirect: '/404', hidden: true }])

动态生成菜单

    // 当获取到对应的路由权限以后
    // 1.首先展现默认不需要权限的路由模块
    // 2.创建一个新的vuex保存不需要权限的路由模块
    // 3.导入公共vuex中
    // 4.将默认的路由和对应的权限路由模块邦迪在一起.
    // 5.通过新增的vuex里面的mutations里的方法修改vuex里储存的默认路由
    // 6.最后在自动生成的index.vuex文件中return 出这个值.
    // 7.避免bug 需要再退出的地方清空保存的路由,恢复的默认状态

    // 新建的vuex文件
    const state = {
      routerList: constantRoutes
    }
    const mutations = {
      addUpData(state, value) {
        state.routerList = value
      }
    }
    const actions = {}
    const getters = {}
    export default {
      namespaced: true,
      state,
      mutations,
      getters,
      actions
    }


    const conRouters = [
      ...constantRoutes, // 默认不需要权限的路由
      ...Array,    // 循环匹配后需要权限的路由
      { path: '*', redirect: '/404', hidden: true }]  // 固定404
    commit('useradd/setdata', conRouters, { root: true }) // 将所有可选的路由存到新的vuex中


   // 最后在生成菜单的组件中修改vuex存储的值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
后台管理系统权限管理是指对用户在系统中的操作权限进行控制和管理的一种机制。在一个后台管理系统中,权限分为功能级权限和数据级权限。功能级权限指的是用户对系统功能模块的访问和操作权限,例如用户是否能够查看、新增、修改或删除某个功能模块;数据级权限指的是用户对系统中的数据进行访问和操作的权限,例如用户只能查看或操作自己的数据,而不能查看或操作其他用户的数据。 在具体的实现中,后台管理系统权限管理可以通过前端和后端的配合来实现。前端权限控制主要是控制用户在界面上的展示和操作权限,可以通过菜单控制、界面控制、按钮控制等方式来达到限制用户的访问和操作能力。而后端权限控制则是对用户请求的处理进行权限验证,确保用户只能访问和操作其具有权限的数据和功能。 引用提到了权限管理主要存在于后台管理系统中,在企业级项目和网站中较为常见。而引用则介绍了一个基于Vue和element-ui组件库搭建的后台管理系统,主要讨论了权限控制的问题,包括菜单控制、界面控制、按钮控制以及请求和响应的控制。同时,引用指出了前端权限控制的本质是控制视图层的展示和前端发送的请求,但仅有前端权限控制是不够的,后端权限控制也是必不可少的。 总结起来,后台管理系统权限管理是通过前端和后端配合实现的,旨在对用户的访问和操作权限进行控制和管理。这样可以确保系统的安全性和数据的保护,同时提供更好的用户体验和界面展示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值