亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue 實現前端權限控制的示例代碼

2019-11-19 11:12:23
字體:
來源:轉載
供稿:網友

登錄&&權限流程圖

前言

首先我們確定的權限控制分為三大部分,其中根據粒度大小分的更細:

  • 登錄權限控制
  • 頁面權限控制
    • 菜單中的頁面是否可以被訪問
    • 頁面中的按鈕 (增、刪、改、查)的權限控制是否顯示
  • 接口權限控制

一、登錄權限控制

登錄訪問權限控制是對用戶的校驗。在用戶登錄成功之后,后臺將返回一個token,之后前端每次進行接口請求的時候,都要帶上這個token。后臺拿到這個token后進行判斷,如果此token確實存在并且沒有過期,則可以通過訪問。如果token不存在或后臺判斷已過期,則會跳轉到登錄頁面,要求用戶重新登錄獲取token。

做法一

在用戶登錄成功的回調中將后臺返回的token直接存儲到localStorage,然后同步配置請求默認參數的形式將token取出放入headers中傳給后臺。代碼如下:

  let axiosOptions = {   method,   url,   data,   timeout,   // 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'。default json   responseType,   // 請求頭內追加authToken屬性   headers: {    authtToken: window.localStorage.getItem(`base/token$$`)   }  }

做法二

當前項目中使用axios.interceptors.request.use設置發送請求前的攔截,直接將token塞入req.headers.authToken中,作為全局傳入。代碼如下:

// axios.interceptors.request.use 請求攔截:配置發送請求的信息// axios.interceptors.response.use 響應攔截:配置請求回來的信息axios.interceptors.request.use(req => { req.headers.authToken = window.localStorage.getItem(`base/token$$`) return req}, error => { return Promise.reject(error)})

登錄涉及到的知識點

  • vuex + localStorage: 本地通過vuex+localStorage持久化存儲token(token:服務端創建用于唯一標識用戶身份的Key)。
  • axios: 請求攔截驗證token,可以使用axios的API:axios.interceptors.request.use,也可以通過添加默認參數的形式在請求頭中追加token。

二、頁面權限控制

上面已經說到,頁面權限控制又分為兩種:

  • 菜單中的頁面是否可以被訪問
  • 頁面中的按鈕 (增、刪、改、查)的權限控制是否顯示

先看菜單的頁面訪問權限

實現頁面訪問權限又可分為以下兩種方案:

  • 方案一、初始化即掛載全部路由,每次路由跳轉前做校驗
  • 方案二、只掛載當前用戶擁有的路由,如果用戶通過URL進行強制訪問,則會直接進入404,相當于從源頭上做了控制

前者的缺點很明顯,每次路由跳轉都要做一遍檢驗是對計算資源的浪費,另外對于用戶無權訪問的路由,理論上就不應該掛載。

后者解決了上述問題,但按需掛載路由就需要知道用戶的路由權限,也就是在用戶登錄進來的時候就要知道當前用戶擁有哪些路由權限。

所以肯定是方案二比較符合良好的用戶體驗。

項目中的菜單權限控制

1.權限涉及到的meta屬性

  • noRequireAuth: true 無需權限直接掛載
  • manageFree: true 不在操作權限樹中展示

2.router.beforeEach()攔截路由的鉤子

  • 不需要權限的路由直接放行。meta內noRequireAuth和manageFree不受權限控制
  • 進入路由前,從后端請求獲取需要展示的菜單。后端根據token判斷當前用戶權限,返回對應菜單。前端遞歸對比確定最終要顯示的菜單列表

3.router.addRoutes()

  • 通過router.addRoutes()動態添加所有符合權限的路由

按鈕級權限控制(Vue指令v-permission)

1.每個模塊對應有四種權限,查詢(get),添加(post),更新(put),刪除(delete)
2.利用十進制和二進制來表示當前模塊所擁有的權限。1111(15),轉換后的二進制與權限的關系表示:從右至左數(1代表擁有該權限,0代表不擁有),第一位代表查詢,第二位代表添加,第三位代表更新,第四位代表刪除。如eg:二進制1111(15),代表用于查詢,添加,更新,刪除四種權限。

3.判斷對應模塊沒有此權限時,移除當前按鈕dom元素。

使用示例:

 <el-button @click="handleClick" v-permission:moduleName.post>新增</el-button> <el-button @click="handleClick" v-permission.delete="moduleName">刪除</el-button>

三、接口訪問權限控制

最后再加上請求控制作為最后一道防線,路由可能配置失誤,按鈕可能忘了加權限,這種時候請求控制可以用來兜底,越權請求將在前端被攔截。

前后端約定接口采用RESTful風格,同樣對應四種權限,包括查詢(get),添加(post),更新(put),刪除(delete)。對于查詢操作,正常如果參數只有一個,應該用get請求,如果有多個參數,需要改為post請求,但是需要在url后面添加/query以告訴服務端當前進行的是查詢操作,用于和正常的添加(post)請求區分。同樣的是,刪除用戶時如果有多個參數,DELETE請求同樣改為POST請求,在后面添加/delete用于和正常的刪除(delete)操作進行區分。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国偷自产一区二区三区的观看方式| 亚洲欧美中文日韩v在线观看| 国产精品丝袜久久久久久高清| 97精品在线观看| 97视频网站入口| 亚洲美女性生活视频| 亚洲综合日韩在线| 狠狠躁夜夜躁人人爽超碰91| 最近2019中文字幕第三页视频| 亚洲夜晚福利在线观看| 欧美成人精品在线播放| 国产成人午夜视频网址| 国产精品久久久久久网站| 91高潮精品免费porn| 插插插亚洲综合网| 欧美老女人bb| 亚洲成年网站在线观看| 国产精品电影久久久久电影网| 久久精品青青大伊人av| 亚洲国产精品va在看黑人| 日韩国产在线播放| 欧美精品在线免费观看| 国产伦精品一区二区三区精品视频| 欧美亚州一区二区三区| 久久久噜久噜久久综合| 国产欧美精品一区二区三区-老狼| 91黑丝在线观看| 综合av色偷偷网| 亚洲精品www| 欧美大全免费观看电视剧大泉洋| 欧美性极品xxxx做受| 尤物九九久久国产精品的特点| 亚洲性日韩精品一区二区| 国产精品一二三视频| 亚洲精品不卡在线| 欧洲永久精品大片ww免费漫画| 91情侣偷在线精品国产| 亚洲精品98久久久久久中文字幕| 久久全国免费视频| 国产精品成人国产乱一区| 亚洲japanese制服美女| 日韩在线观看免费| 中文字幕在线看视频国产欧美| 国产裸体写真av一区二区| 高清亚洲成在人网站天堂| 一区二区中文字幕| 亚洲国产精品女人久久久| 亚洲激情在线视频| 亚洲成人动漫在线播放| 国产精品爽爽爽爽爽爽在线观看| 日本精品视频在线播放| 欧美日韩国产综合新一区| 亚洲第一精品夜夜躁人人躁| 成人免费在线视频网站| 疯狂蹂躏欧美一区二区精品| 性色av一区二区三区红粉影视| 国产精品久久不能| 日韩有码片在线观看| 国精产品一区一区三区有限在线| 国产成人精品免高潮在线观看| 亚洲18私人小影院| 欧美猛交ⅹxxx乱大交视频| 国产一区二区三区欧美| 欧美大片免费观看在线观看网站推荐| 中文字幕一区电影| 午夜精品久久17c| 日韩高清电影好看的电视剧电影| 欧美一性一乱一交一视频| 久久国产精品久久久久久久久久| 亚洲人成绝费网站色www| 国产精品一久久香蕉国产线看观看| 日韩成人在线视频观看| 欧美电影免费观看高清| 成人精品久久av网站| 蜜月aⅴ免费一区二区三区| 国产精品久久久久久亚洲影视| 欧美色videos| 日韩精品免费观看| 国产国语刺激对白av不卡| 亚洲码在线观看| 俺也去精品视频在线观看| 久久久久一本一区二区青青蜜月| 美女啪啪无遮挡免费久久网站| 日韩欧美在线看| 国产主播欧美精品| 中文字幕精品在线| 日韩欧美亚洲范冰冰与中字| 国产欧美一区二区三区久久| 最近2019免费中文字幕视频三| 国内精品视频久久| 欧美夫妻性生活视频| 亚洲午夜激情免费视频| 国产精品av免费在线观看| 国产91在线高潮白浆在线观看| 91丨九色丨国产在线| 成人激情视频在线| 欧美日本啪啪无遮挡网站| 国产精品日日做人人爱| 啪一啪鲁一鲁2019在线视频| 国产欧亚日韩视频| 国产精品69av| 欧美成人午夜影院| 91最新在线免费观看| 欧美精品中文字幕一区| 91精品久久久久久久久久入口| 欧美日韩激情网| 欧美另类老肥妇| 国产欧美精品va在线观看| 日韩黄色高清视频| 日韩av在线免播放器| 日本亚洲精品在线观看| 国产精品一区二区三区久久| 91香蕉亚洲精品| 91po在线观看91精品国产性色| 午夜精品久久久99热福利| 久久香蕉国产线看观看av| 亚洲free性xxxx护士白浆| 欧美亚洲日本黄色| 久久亚洲影音av资源网| 欧美性极品少妇精品网站| 亚洲专区国产精品| 色综合伊人色综合网站| 国产精品免费看久久久香蕉| 国产亚洲精品久久久久久| 日韩免费观看高清| 中文字幕久精品免费视频| 欧美中文字幕在线视频| 国产91精品久久久久久| 日韩中文字幕网址| 国产精品久久久久久av下载红粉| 亚洲精品国产综合久久| 日本国产高清不卡| 久久精品亚洲精品| 精品精品国产国产自在线| 亚洲综合精品伊人久久| 97在线精品国自产拍中文| 亚洲二区中文字幕| 俺去了亚洲欧美日韩| 久久久欧美一区二区| 欧美午夜激情在线| 日本免费一区二区三区视频观看| 国产精品私拍pans大尺度在线| 国内精品视频在线| 亚洲精品国精品久久99热一| 欧美亚洲另类制服自拍| 国产精品视频一区国模私拍| 久久成人一区二区| 国产精品99免视看9| 日韩av日韩在线观看| 日韩有码在线视频| 精品视频一区在线视频| 久热精品视频在线免费观看| 在线播放日韩av| zzjj国产精品一区二区| 一本色道久久综合亚洲精品小说| 亚洲3p在线观看| 亚洲精品网址在线观看| 亚洲天天在线日亚洲洲精| 欧美激情一区二区三区高清视频| 日韩中文字幕免费视频| 亚洲va国产va天堂va久久| 亚洲精品乱码久久久久久按摩观| 日韩精品一区二区三区第95| 91精品中文在线|