Vue后台管理项目权限处理思路

不同角色权限的菜单栏渲染思路

根据后台返回的right数据渲染角色菜单, 在login页面请求数据时使用this.$store.commit调用该方法将将其存入vuex里,并对其做本地化处理,需要事先在mutation中定义相应添加的方法,然后在home页面进行使用时,使用mapstate将数据…mapstate存入computed(…mapState([‘rightList’])里进行处理,然后v-for渲染时直接使用即可。
注意:如果不进行本地化处理,页面刷新后将会丢失菜单栏信息,因为其信息是在login页进行获取并存储的。 退出时需要调用sessionstorage.clear/remove清除本地数据,然后让页面重新加载,即可清除vuex中的数据。

退出功能

2.根据角色权限实现动态添加路由

// 定义路由规则
const reportRule = {
  path: '/reports', component: Report
}
const orderRule = {
  path: '/orders', component: Order
}


// 定义二级权限字段与路由规则之间的对应关系
const ruleMapping = {
  'reports': reportRule,
  'orders': orderRule
}

// 定义动态添加路由的方法并导出至login页面进行使用
//  根据二级权限,对路由规则进行动态添加
export function initDynamicRoutes () {
  // router对象中的options下的routes就是所有的路由规则
  const currentRoutes = router.options.routes
  // 假定我们要向其中第2个路由中的children添加对应路由
  const rightList = store.state.rightList
  // 双重foreach遍历到其二级权限
  rightList.forEach(item => {
    // 此时的item对应后台返回数据中的一级权限
    // 通过循环一级权限下的children节点拿到所有二级权限
    item.children.forEach(item => {
      // 通过映射关系拿到对应路由规则 item.path就是二级权限字段
      const tem = ruleMapping[item.path]
      // 将对应路由规则添加到当前路由对象
      //此时可以向tem添加meta节点
      //tem.meta = '后台返回数据对应的权限节点数据'
      currentRoutes[2].children.push(tem)
    })
  });
  // push完后 调用对应api进行路由规则的添加
  router.addRoute(currentRoutes)
}

调用时机:登录成功后调用initDynamicRoutes()
总体思路就是根据后台返回的权限数据来判断该用户是否具有该路由权限,无权限则直接404。而动态添加路由的思路是拿到router实例上的routes路由规则数据,对比后台数据后对routes的路由数据进行添加,然后调用router.addRoute方法将最新的路由规则添加到路由实例对象中

问题: 如果我们重新刷新的话动态路由就会消失,动态路由是在登录成功之后才会调用的,刷新的时候并没有调用,所以动态路由没有添加上

解决: 可以在app.vue中的created中调用添加动态路由的方法。

3.页面按钮的控制
虽然用户可以看到某些界面了, 但是这个界面的一些按钮该用户可能是没有权限的。 因此, 我们需要对组件中的一些按钮进行控制, 用户不具备权限的按钮就隐藏或者禁用, 而在这块的实现中, 可以把该逻辑放到自定义指令中

比如我们可以根据后端返回的数据right来判断用户有什么权限,如下图
在这里插入图片描述
添加自定义指令 控制按钮
在这里插入图片描述
总体思路就是通过自定义指令在其指令内部逻辑实现对后台节点数据的对比判断,并对绑定该指令的元素进行相应操作。
具体实现是通过在自定指令上的action、effect等信息,告诉指令内部,该按钮应具备哪些权限判断条件,比如add,如果后台权限信息有add,那么该用户具有add权限,则指令内部不做逻辑处理,如果没有,则在页面上移除该按钮。其他以此类推。

4.axios请求头的设置
注:req实际上就是请求对象,处理完相应逻辑后必须return出去,否则无法进行请求。

请求控制
除了登录请求都得要带上token , 这样服务器才可以鉴别你的身份
asiox的请求拦截器设置:
在这里插入图片描述
如果发出了非权限内的请求, 应该直接在前端范围内阻止, 虽然这个请求发到服务器也会被拒绝

非权限内的请求:比如a用户是不能够操作该页面的按钮的,但是他通过f12调试把按钮改为可点击,如果我们不对这个请求进行处理,那么这个请求就会发送出
在这里插入图片描述
总体思路就是根据restful的请求方式,设置一个映射函数,在请求头中我们可以通过restful的请求方式来判断该用户在进行哪种操作,再在用户的权限中查找他是否有进行该操作的权限,如果没有就报错。

响应控制
得到了服务器返回的状态码401, 代表token 超时或者被篡改了,此时应该强制跳转到登录界面
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值