Vue 项目权限管理

本文介绍了如何在Vue项目中利用beforEach和afterEach钩子处理用户访问权限,以及如何通过自定义Vuedirective指令来管理菜单按钮,实现按角色权限控制组件显示。
摘要由CSDN通过智能技术生成

介绍

在项目中,无处不在对用户的访问权限与操作权限做处理,访问权限大家再熟悉不过了,在 Vue 项目中可直接在 router >  index.ts 或是 js 文件对其进行处理,采用 beforEach 与 afterEach技术,但是设计到内部某行数据或是操作按钮就要用到了 Vue 中的自定义指令了。

router

to  即将进入路由对象

from  当前正要离开的路由对象

next  用来管控是否进入下一级路由

beforEach 跳转前触发

此函数好处就是在用户还未跳转到指定路由就将其拦截,避免用户看到界面以及闪屏等现象

router.beforeEach((
    to,
    from,
    next
) => {
   // 此处对用户权限进行处理
   // 1. 用户信息  2. 角色权限
   // 内部逻辑根据自己业务进行编写
})

afterEach 跳转后触发

两者语法上并无区别,此处就不过多介绍。

router.afterEach((
    to,
    from,
    next
) => {
   // 此处对用户权限进行处理
   // 1. 用户信息  2. 角色权限
   // 内部逻辑根据自己业务进行编写
})

通过以上方式可对用户访问界面进行控制,也就是所谓的黑白名单,此处建议使用 beforEach 优缺点上方已介绍。

Vue directive 自定义指令

对项目中的菜单按钮进行管控,使用 v-if 判断过于笨重及存在不确定因素,因此使用自定义指令,在项目中定义 directive.ts 用于储存 directive指令并在 main.ts 中引入挂在到全局并使用。

案列:

directive.ts 文件

// 注册(函数形式的指令)
const directive = (app:any) => {
    app.directive('test', {
        mounted(el:any, binding:any) {
            // binding.value  指令携带的参数
            // 指令内部逻辑处理
        }
    })
}
export default directive

main.ts 

此处将 app.directive('test') 放入全局并在组件中使用

import App from './App.vue'
import { createApp } from 'vue'
import directive from "@/utils/directive"

const app = createApp(App)

app.use(app.directive('test'))

app.mount('#app')

组件使用

<template>
    <div v-test="['test']"></div>
</template>

<script setup lang="ts">
     
</script>

<style lang="less">
    
</style>

以上使用方式思路为首先在后台角色权限中对其用户分配角色包括按钮级别,通过获取后端接口将此数据储存并在 v-test 自定义指令中使用,例如:v-test="['cloudAdd']" 如存在则显示,此步需要在指令函数体中对储存的数据和传入的参数进行对比即可实现。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值