第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Vue項目 權限控制方案 --使用路由守衛(wèi)與自定義指令

標簽:
Vue.js

今日徒弟问我,怎么处理后台管理这块的拦截


比如,用户没有一个路由的权限,但用户直接从其他地方得到的链接,直接输入到浏览器,这种应该怎么做拦截


另外,权限如果控制到按钮上,改如何做权限,有没有简单,轻便的方法.


 


于是我整理了一些目前我们系统的权限管理方案,给她做了一个demo展示.


全局前置导航守卫js

// 使用路由守卫对router全局权限拦截,
import router from './src/router'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
NProgress.configure({ showSpinner: false })
 
const whiteList = ['/login', '/withoutPermission', '/'] // 不进行权限判断的白名单
 
router.beforeEach((to, from, next) => {
  NProgress.start()
  if (whiteList.includes(to.path)) {
    next()
  } else {
    // 获取localStorage中的权限链接数组
    const localStoragePermissionLinkArr = JSON.parse(localStorage.getItem('permissionLink') || '[]')
    if (localStoragePermissionLinkArr && localStoragePermissionLinkArr.length > 0 ) {
      if (localStoragePermissionLinkArr.includes(to.path)) {
        console.log('有此页面权限直接进入')
        next()
      } else {
        console.log('没有此权限进入无权限页面')
        next({ path: '/withoutPermission' })
        NProgress.done()
      }
    } else {
      console.log('localStorage中没有权限数组permissionLink')
      next({ path: '/login' })
      NProgress.done()
    }
  }
})
 
router.afterEach(() => {
  NProgress.done()
})


自定义权限拦截指令


// 验证权限自定义指令 在对象插入父级元素时验证
// bind:指令的表达式对象,权限链接; el绑定指令的element,
// 例如v-permission="'/start/add'"
Vue.directive('permission', {
  inserted: function (el, bind) {
    let permissionUrl = bind.value
    let permissionArr = JSON.parse(localStorage.getItem('permissionLink') || '[]')
    if (!permissionArr.includes(permissionUrl)) {
      el.parentNode.removeChild(el)
    }
  }
})

使用方法如下:

<router-link v-permission="'/home'" to="/home">Home | </router-link>
<router-link v-permission="'/about'" to="/about">About | </router-link>
<router-link v-permission="'/admin'" to="/admin">Home | </router-link>
<router-link v-permission="'/withoutPermission'" to="/withoutPermission">withoutPermission | </router-link>
<router-link v-permission="'/test1'" to="/test1">test1</router-link>

————————————————


點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消