欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Vue實(shí)現(xiàn)前端權(quán)限控制的示例代碼

登錄&&權(quán)限流程圖

鄢陵網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),鄢陵網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為鄢陵近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的鄢陵做網(wǎng)站的公司定做!

Vue 實(shí)現(xiàn)前端權(quán)限控制的示例代碼

前言

首先我們確定的權(quán)限控制分為三大部分,其中根據(jù)粒度大小分的更細(xì):

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

一、登錄權(quán)限控制

登錄訪問(wèn)權(quán)限控制是對(duì)用戶的校驗(yàn)。在用戶登錄成功之后,后臺(tái)將返回一個(gè)token,之后前端每次進(jìn)行接口請(qǐng)求的時(shí)候,都要帶上這個(gè)token。后臺(tái)拿到這個(gè)token后進(jìn)行判斷,如果此token確實(shí)存在并且沒(méi)有過(guò)期,則可以通過(guò)訪問(wèn)。如果token不存在或后臺(tái)判斷已過(guò)期,則會(huì)跳轉(zhuǎn)到登錄頁(yè)面,要求用戶重新登錄獲取token。

做法一

在用戶登錄成功的回調(diào)中將后臺(tái)返回的token直接存儲(chǔ)到localStorage,然后同步配置請(qǐng)求默認(rèn)參數(shù)的形式將token取出放入headers中傳給后臺(tái)。代碼如下:

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

做法二

當(dāng)前項(xiàng)目中使用axios.interceptors.request.use設(shè)置發(fā)送請(qǐng)求前的攔截,直接將token塞入req.headers.authToken中,作為全局傳入。代碼如下:

// axios.interceptors.request.use 請(qǐng)求攔截:配置發(fā)送請(qǐng)求的信息
// axios.interceptors.response.use 響應(yīng)攔截:配置請(qǐng)求回來(lái)的信息

axios.interceptors.request.use(req => {
 req.headers.authToken = window.localStorage.getItem(`base/token$$`)
 return req
}, error => {
 return Promise.reject(error)
})

登錄涉及到的知識(shí)點(diǎn)

  • vuex + localStorage: 本地通過(guò)vuex+localStorage持久化存儲(chǔ)token(token:服務(wù)端創(chuàng)建用于唯一標(biāo)識(shí)用戶身份的Key)。
  • axios: 請(qǐng)求攔截驗(yàn)證token,可以使用axios的API:axios.interceptors.request.use,也可以通過(guò)添加默認(rèn)參數(shù)的形式在請(qǐng)求頭中追加token。

二、頁(yè)面權(quán)限控制

上面已經(jīng)說(shuō)到,頁(yè)面權(quán)限控制又分為兩種:

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

先看菜單的頁(yè)面訪問(wèn)權(quán)限

實(shí)現(xiàn)頁(yè)面訪問(wèn)權(quán)限又可分為以下兩種方案:

  • 方案一、初始化即掛載全部路由,每次路由跳轉(zhuǎn)前做校驗(yàn)
  • 方案二、只掛載當(dāng)前用戶擁有的路由,如果用戶通過(guò)URL進(jìn)行強(qiáng)制訪問(wèn),則會(huì)直接進(jìn)入404,相當(dāng)于從源頭上做了控制

前者的缺點(diǎn)很明顯,每次路由跳轉(zhuǎn)都要做一遍檢驗(yàn)是對(duì)計(jì)算資源的浪費(fèi),另外對(duì)于用戶無(wú)權(quán)訪問(wèn)的路由,理論上就不應(yīng)該掛載。

后者解決了上述問(wèn)題,但按需掛載路由就需要知道用戶的路由權(quán)限,也就是在用戶登錄進(jìn)來(lái)的時(shí)候就要知道當(dāng)前用戶擁有哪些路由權(quán)限。

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

項(xiàng)目中的菜單權(quán)限控制

1.權(quán)限涉及到的meta屬性

  • noRequireAuth: true 無(wú)需權(quán)限直接掛載
  • manageFree: true 不在操作權(quán)限樹中展示

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

  • 不需要權(quán)限的路由直接放行。meta內(nèi)noRequireAuth和manageFree不受權(quán)限控制
  • 進(jìn)入路由前,從后端請(qǐng)求獲取需要展示的菜單。后端根據(jù)token判斷當(dāng)前用戶權(quán)限,返回對(duì)應(yīng)菜單。前端遞歸對(duì)比確定最終要顯示的菜單列表

3.router.addRoutes()

  • 通過(guò)router.addRoutes()動(dòng)態(tài)添加所有符合權(quán)限的路由

按鈕級(jí)權(quán)限控制(Vue指令v-permission)

1.每個(gè)模塊對(duì)應(yīng)有四種權(quán)限,查詢(get),添加(post),更新(put),刪除(delete)
2.利用十進(jìn)制和二進(jìn)制來(lái)表示當(dāng)前模塊所擁有的權(quán)限。1111(15),轉(zhuǎn)換后的二進(jìn)制與權(quán)限的關(guān)系表示:從右至左數(shù)(1代表?yè)碛性摍?quán)限,0代表不擁有),第一位代表查詢,第二位代表添加,第三位代表更新,第四位代表刪除。如eg:二進(jìn)制1111(15),代表用于查詢,添加,更新,刪除四種權(quán)限。

3.判斷對(duì)應(yīng)模塊沒(méi)有此權(quán)限時(shí),移除當(dāng)前按鈕dom元素。

使用示例:

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

三、接口訪問(wèn)權(quán)限控制

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

前后端約定接口采用RESTful風(fēng)格,同樣對(duì)應(yīng)四種權(quán)限,包括查詢(get),添加(post),更新(put),刪除(delete)。對(duì)于查詢操作,正常如果參數(shù)只有一個(gè),應(yīng)該用get請(qǐng)求,如果有多個(gè)參數(shù),需要改為post請(qǐng)求,但是需要在url后面添加/query以告訴服務(wù)端當(dāng)前進(jìn)行的是查詢操作,用于和正常的添加(post)請(qǐng)求區(qū)分。同樣的是,刪除用戶時(shí)如果有多個(gè)參數(shù),DELETE請(qǐng)求同樣改為POST請(qǐng)求,在后面添加/delete用于和正常的刪除(delete)操作進(jìn)行區(qū)分。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站標(biāo)題:Vue實(shí)現(xiàn)前端權(quán)限控制的示例代碼
網(wǎng)頁(yè)網(wǎng)址:http://aaarwkj.com/article42/igsihc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站制作、云服務(wù)器、外貿(mào)網(wǎng)站建設(shè)、App開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
亚洲熟女av综合网五月| 自拍国语对白在线视频| 亚洲在线免费播放视频| 一区二区高清中文字幕| 精品毛片av一区二区三区| 91久久亚洲综合精品成人| 国产一区av剧情巨作| 国产亚洲一区二区日韩欧美| 国产91高清视频在线观看| 久久精品国产精品亚洲片| 日本不卡一区二区在线观看| 国产片精品一区在线观看| 杨幂一区二区在线观看| 岛国av在线免费观看| 亚洲欧美国产精品日韩| 热久久这里只有精品视频| 成年人免费在线观看国产| 久久久人妻91久久久久| 日韩欧美二区三区精品在线| 精品日韩欧美精品日韩| 四虎精品免费在线视频| 国产麻豆剧传媒精品av| 国产伊人久久综合网| 中国亚洲视频一区二区| 亚洲国产欧美日韩国产| 丰满少妇一级淫片在线播放| 本色啪啪人妻夜嗨嗨av| 国产麻豆91精品女同性恋| 日韩精品人妻一区二区免| 欧美黑人在线一区二区| 丰满少妇高潮在线视频| 天天操夜夜操狠狠操91| 国产精品欧美日韩精品| 亚洲国产一区二区精品| 久久成人综合亚洲精品欧美| 日本束缚人妻一区二区三区| 91天美精东果冻麻豆| 99热这里只有精品中文有码| 久久成人影院免费观看| 日本人妻在线一区二区三区| 国产精品伊人久久精品|