前端设置按钮权限(vue3.0+ts+vantdesginVue)

设置按钮权限(vue3.0+ts+vantdesginVue)

在路由守卫里添加请求后端返回的权限数据 将他存储到sessionStorage里

router.beforeEach(async (to, from, next) => {
    const token = sessionStorage.getItem("token") ? JSON.parse(JSON.stringify(sessionStorage.getItem("token"))): '';
    // 不存在token时
    if (!token) {
      if (to.path === '/login') {
        next()
      } else {
        next('/login')
      }
    }
    next();
    //根据菜单里面的path字段与当前路由的path字段找出当前对应的菜单ID
    let menuList:any = sessionStorage.getItem("menuList")?JSON.parse(sessionStorage.getItem("menuList")):[];
    let arr =  [...menuList.map(it=> it.children).flat(2), ...menuList];
    let obj = arr.find((it)=>{
      return  to.path.includes(it.path) 
    })
    
    getBtnAuthority(obj.id)
  });
//根据菜单ID查询当前路由(页面)下对应的权限有哪些
 async function getBtnAuthority (id) {
  let res:any = await systemManagementApi.getBtnAuthority(id);
  if(res.success){
     sessionStorage.setItem('btnAuthority',JSON.stringify(res.obj))//将权限存储到会话存储里面
  } else {
    message.error(res.msg)
  }
}

在这里插入图片描述
写一个方法 拿到sessionStorage里的值 在任何一样页面就可以使用了

//queryBtn.ts
export function showBtn(flag) {
  let btnArr = JSON.parse(sessionStorage.getItem('btnAuthority'));
  let obj = btnArr?.find(it=>{
    return flag === it.path
  })
  return obj 
}

将他引到页面使用
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值