精品视频日韩无码,伊人久久无码av一区二区三区,久久艹视频国产视频,欧美成A人免费观看久久

  1. <tt id="u23fe"><i id="u23fe"><sub id="u23fe"></sub></i></tt>

      <b id="u23fe"><address id="u23fe"><kbd id="u23fe"></kbd></address></b>

      <source id="u23fe"><track id="u23fe"></track></source>
    1. 位置: IT常識(shí) - 正文

      前端權(quán)限控制(一):前端權(quán)限管理及動(dòng)態(tài)路由配置方案(前端權(quán)限控制實(shí)戰(zhàn))

      編輯:rootadmin
      前端權(quán)限控制(一):前端權(quán)限管理及動(dòng)態(tài)路由配置方案 權(quán)限控制

      推薦整理分享前端權(quán)限控制(一):前端權(quán)限管理及動(dòng)態(tài)路由配置方案(前端權(quán)限控制實(shí)戰(zhàn)),希望有所幫助,僅作參考,歡迎閱讀內(nèi)容。

      文章相關(guān)熱門(mén)搜索詞:前端權(quán)限控制怎么做,前端權(quán)限控制按鈕,前端權(quán)限控制,前端權(quán)限控制方案,前端權(quán)限控制實(shí)戰(zhàn),前端權(quán)限控制,前端權(quán)限控制面試題,前端權(quán)限控制面試題,內(nèi)容如對(duì)您有幫助,希望把文章鏈接給更多的朋友!

      在項(xiàng)目中,尤其是在后臺(tái)管理系統(tǒng)中,不同人員登陸,看到的頁(yè)面菜單是不一樣的,比如,一個(gè)公司的辦公系統(tǒng),超級(jí)管理員登陸可以看到所有的頁(yè)面,而普通員工賬號(hào)登錄可能無(wú)法看到人員管理等頁(yè)面,比如公司的員工個(gè)人資料頁(yè)面只有人力資源部門(mén)有權(quán)利看,其他部門(mén)的員工是不允許查看公司員工信息數(shù)據(jù)的。當(dāng)然了除了頁(yè)面的權(quán)限,還會(huì)有一些按鈕級(jí)別的權(quán)限,比如一個(gè)下載按鈕,有的帳號(hào)可以用,有的人不能用,比如人員賬號(hào)管理中,一個(gè)頁(yè)面中有一個(gè)確認(rèn)添加、刪除該賬號(hào)人員按鈕,這個(gè)按鈕只有管理員有權(quán)利點(diǎn)擊,其他人員登陸是無(wú)法點(diǎn)擊的。

      頁(yè)面級(jí)權(quán)限控制

      當(dāng)前系統(tǒng)方案為:前端路由信息完全寫(xiě)死,并且動(dòng)態(tài)生成頁(yè)面菜單。自己本身的router.js文件定義好頁(yè)面所有的路由。這種方式弊端很明顯,并不能實(shí)現(xiàn)真正的權(quán)限控制,因?yàn)槿绻脩?hù)記住了某個(gè)理由,用戶(hù)不點(diǎn)擊菜單,直接在地址欄里輸入地址,那么頁(yè)面還是可以顯示出來(lái)。

      所有方案前提:登錄成功后后臺(tái)返回當(dāng)前登錄用戶(hù)權(quán)限code(或者name、role,名稱(chēng)溝通后自定義),前端存儲(chǔ)在vuex中。

      方案一:

      前端只在路由跳轉(zhuǎn)時(shí)做權(quán)限判斷。

      方案一改動(dòng)當(dāng)前代碼量最小,無(wú)需后端改動(dòng),前端路由和側(cè)邊欄顯示不變,在對(duì)需要權(quán)限區(qū)分的路由在跳轉(zhuǎn)時(shí)候添加前置路由守衛(wèi)router.beforeEach,進(jìn)行當(dāng)前權(quán)限判斷,不滿(mǎn)足權(quán)限的跳轉(zhuǎn)到相應(yīng)頁(yè)面(自定義401、404頁(yè)面等),但該方案不能實(shí)現(xiàn)真正的權(quán)限控制。

      router.beforeEach((to, from, next) =>?{? ? if?(store.getters.roles.length?=== 0) { // 判斷是否保存有權(quán)限信息? ? ? const?roles?= store.getters.roles;? ? ? if?(roles?!== 'admin') { // 不為管理員? ? ? ? if?(to.path?=== '/faultInfo') {? ? ? ? ? next({ path:?'/401'?})? ? ? ? } else?{? ? ? ? ? next()? ? ? ? } ? ? ? ?? ? ? } else?{? ? ? ? next()? ? ? }? ? } else?{? ? ? next('/login');? ? }});方案二:

      后端返回路由權(quán)限名,前端存儲(chǔ)完整路由權(quán)限表,并動(dòng)態(tài)生成路由。

      建議看大神的文檔,已經(jīng)寫(xiě)的很詳細(xì)了:手摸手,帶你用vue擼后臺(tái) 系列二(登錄權(quán)限篇) - 掘金

      以下是自己實(shí)現(xiàn)思路:

      建議登錄login和返回用戶(hù)路由信息get_user_info兩件事分開(kāi)請(qǐng)求比較好。

      步驟:

      · ?登錄:當(dāng)用戶(hù)填寫(xiě)完賬號(hào)和密碼后向服務(wù)端驗(yàn)證是否正確,驗(yàn)證通過(guò)之后,服務(wù)端會(huì)返回一個(gè)token,拿到token之后(將這個(gè)token存貯到cookie中,保證刷新頁(yè)面后能記住用戶(hù)登錄狀態(tài)),前端會(huì)根據(jù)token再去拉取一個(gè) user_info 的接口來(lái)獲取用戶(hù)的詳細(xì)信息(如用戶(hù)權(quán)限,用戶(hù)名等等信息)。

      前端權(quán)限控制(一):前端權(quán)限管理及動(dòng)態(tài)路由配置方案(前端權(quán)限控制實(shí)戰(zhàn))

      ·??權(quán)限驗(yàn)證:通過(guò)token獲取用戶(hù)對(duì)應(yīng)的 role,動(dòng)態(tài)根據(jù)用戶(hù)的 role 算出其對(duì)應(yīng)有權(quán)限的路由,通過(guò) router.addRoutes 動(dòng)態(tài)掛載這些路由。

      數(shù)據(jù)和操作都可存儲(chǔ)至vuex全局管理。(刷新頁(yè)面后 vuex的內(nèi)容也會(huì)丟失,所以需要重復(fù)get_user_info的操作)

      權(quán)限控思路:前端會(huì)有一份路由表,它表示了每一個(gè)路由可訪(fǎng)問(wèn)的權(quán)限。當(dāng)用戶(hù)登錄之后,通過(guò)?token?獲取用戶(hù)的?role?,動(dòng)態(tài)根據(jù)用戶(hù)的?role?算出其對(duì)應(yīng)有權(quán)限的路由,再通過(guò)router.addRoutes動(dòng)態(tài)掛載路由。

      創(chuàng)建vue實(shí)例的時(shí)候?qū)ue-router掛載,但這個(gè)時(shí)候vue-router掛載一些登錄或者不用權(quán)限的公用的頁(yè)面。當(dāng)用戶(hù)登錄后,獲取用role,將role和路由表每個(gè)頁(yè)面的需要的權(quán)限作比較,生成最終用戶(hù)可訪(fǎng)問(wèn)的路由表。調(diào)用router.addRoutes(store.getters.addRouters)添加用戶(hù)可訪(fǎng)問(wèn)的路由。使用vuex管理路由表,根據(jù)vuex中可訪(fǎng)問(wèn)的路由渲染側(cè)邊欄組件。

      方案二開(kāi)始,路由分為兩種:constantRoutes?和?asyncRoutes。

      constantRoutes:?代表那些不需要?jiǎng)討B(tài)判斷權(quán)限的路由,如登錄頁(yè)、404、等通用頁(yè)面。

      asyncRoutes:?代表那些需求動(dòng)態(tài)判斷權(quán)限并通過(guò)?addRoutes?動(dòng)態(tài)添加的頁(yè)面。

      //固定路由const?constantRoutes? = [? {? ? path:?'/',? ? redirect:?'/login',? },? {? ? path:?'/login',? ? name:?'登錄頁(yè)面',? ? component:?()=>import("@/views/login.vue")? },? {? ? path:?'/404',? ? name:?'404頁(yè)面',? ? component:?()=>import("@/views/404.vue")? },? {? ? path:?'/401',? ? name:?'401頁(yè)面',? ? component:?()=>import("@/views/401.vue")? },]

      需要權(quán)限路由:字段roles,表示當(dāng)前路由所需要的權(quán)限。

      // 需要權(quán)限路由export?const?asyncRoutes?= [? {? ? path:?'/permission',? ? name:?'permissionhome',? ? meta:?{? ? ? icon:?'el-icon-setting',? ? ? roles:?['admin','superadmin']? ? },? ? component:?()=>import("@/views/permission.vue")?},?{? ? path:?'/detail',? ? name:?'detail',? ? meta:?{? ? ? icon:?'el-icon-setting',? ? ? roles:?['superadmin']? ? },? ? component:?()=>import("@/views/detail.vue")?},

      使用addRoutes方法動(dòng)態(tài)添加路由并進(jìn)行權(quán)限判斷:

      // main.jsconst?whiteList?= ['/login'] // 免登陸頁(yè)面router.beforeEach((to, from, next) =>?{? if?(store.getters.token) { // 判斷是否有token? ? if?(to.path?=== '/login') {? ? ? next({ path:?'/'?});? ? } else?{? ? ? if?(store.getters.roles.length?=== 0) { // 判斷用戶(hù)是否游user_info信息? ? ? ? store.dispatch('GetInfo').then(res?=>?{ // 獲取info? ? ? ? ? const?roles?= res.data.role;? ? ? ? ? store.dispatch('GenerateRoutes', { roles?}).then(() =>?{ // 生成可訪(fǎng)問(wèn)的路由表? ? ? ? ? ? router.addRoutes(store.getters.addRouters) // 動(dòng)態(tài)添加可訪(fǎng)問(wèn)路由表? ? ? ? ? ?next({ ...to, replace:?true?}) // hack方法 確保addRoutes已完成? ? ? ? }).catch(err?=>?{? ? ? ? ? console.log(err);? ? ? ? });? ? ? } else?{? ? ? ? next() //當(dāng)有用戶(hù)權(quán)限的時(shí)候,說(shuō)明所有可訪(fǎng)問(wèn)路由已生成 如訪(fǎng)問(wèn)沒(méi)權(quán)限的全面會(huì)自動(dòng)進(jìn)入404頁(yè)面? ? ? }? ? }? } else?{? ? if?(whiteList.indexOf(to.path) !== -1) { // 在免登錄白名單,直接進(jìn)入? ? ? next();? ? } else?{? ? ? next('/login'); // 否則全部重定向到登錄頁(yè)? ? }? }});方案三:

      登陸成功之后直接由后端返回異步路由表,然后前端直接通過(guò)addRoutes方法添加。前端添加用戶(hù)頁(yè)面權(quán)限配置頁(yè)面。

      實(shí)現(xiàn)方式應(yīng)該跟方案二差不多,具體實(shí)現(xiàn)還需跟后端人員溝通討論。

      實(shí)現(xiàn)步驟:前端權(quán)限控制(二):VUE-router.addRoutes根據(jù)后臺(tái)接口傳遞數(shù)據(jù)生成動(dòng)態(tài)路由,前端拿到配置并生成側(cè)邊欄-實(shí)現(xiàn)頁(yè)面級(jí)權(quán)限控制

      按鈕級(jí)權(quán)限控制方案一:

      在獲取到用戶(hù)的role之后,在前端用v-if手動(dòng)判斷來(lái)區(qū)分不同權(quán)限對(duì)應(yīng)的按鈕的?;蛘邔⑺庋b成一個(gè)自定義指令使用。

      方案二:

      在頁(yè)面級(jí)權(quán)限控制方案三基礎(chǔ)上來(lái)操作,后端返回異步路由表中添加頁(yè)面按鈕權(quán)限字段,前端根據(jù)返回表來(lái)顯示操作按鈕。

      具體實(shí)現(xiàn):前端權(quán)限控制(三):根據(jù)后臺(tái)接口數(shù)據(jù)傳遞頁(yè)面按鈕權(quán)限-實(shí)現(xiàn)按鈕級(jí)權(quán)限控制

      方案三:

      不同權(quán)限的用戶(hù)顯示不同的側(cè)邊欄和限制其所能進(jìn)入的頁(yè)面,后端驗(yàn)證每一個(gè)涉及請(qǐng)求的操作,驗(yàn)證其是否有該操作的權(quán)限,每一個(gè)后臺(tái)的請(qǐng)求 get 或者 post 前端都在請(qǐng)求 header里面攜帶用戶(hù)的 token,后端根據(jù)該 token 來(lái)驗(yàn)證用戶(hù)是否有權(quán)限執(zhí)行該操作。若沒(méi)有權(quán)限則拋出一個(gè)對(duì)應(yīng)的狀態(tài)碼,前端檢測(cè)到該狀態(tài)碼,做出相對(duì)應(yīng)的操作。

      本文鏈接地址:http://esstyw.cn/zhishi/300273.html 轉(zhuǎn)載請(qǐng)保留說(shuō)明!

      上一篇:基于Web的疫情防控管理系統(tǒng)(基于web的疫情防控方案)

      下一篇:微信小程序 | 人臉識(shí)別的最終解決方案(微信小程序人民法院審核通過(guò)多久立案)

    2. ipadpro2021怎么退出應(yīng)用(ipadpro如何退回上一步)

      ipadpro2021怎么退出應(yīng)用(ipadpro如何退回上一步)

    3. 華為p40支持無(wú)線(xiàn)充電嗎(華為P40支持無(wú)線(xiàn)充電的手機(jī))

      華為p40支持無(wú)線(xiàn)充電嗎(華為P40支持無(wú)線(xiàn)充電的手機(jī))

    4. ip協(xié)議版本選哪個(gè)(ip協(xié)議類(lèi)型怎么選)

      ip協(xié)議版本選哪個(gè)(ip協(xié)議類(lèi)型怎么選)

    5. 剪切快捷鍵ctrl加什么(剪切快捷鍵ctrl加什么復(fù)制粘貼)

      剪切快捷鍵ctrl加什么(剪切快捷鍵ctrl加什么復(fù)制粘貼)

    6. 光貓和機(jī)頂盒怎么連接(光貓和機(jī)頂盒怎么接線(xiàn))

      光貓和機(jī)頂盒怎么連接(光貓和機(jī)頂盒怎么接線(xiàn))

    7. v1731ca是不是vivo手機(jī)(v1731ca是什么型號(hào)的手機(jī))

      v1731ca是不是vivo手機(jī)(v1731ca是什么型號(hào)的手機(jī))

    8. 不需要驗(yàn)證碼怎樣關(guān)聯(lián)qq號(hào)(不需要驗(yàn)證碼怎么登錄QQ)

      不需要驗(yàn)證碼怎樣關(guān)聯(lián)qq號(hào)(不需要驗(yàn)證碼怎么登錄QQ)

    9. 怎么一鍵修復(fù)word啊(怎么一鍵修復(fù)注冊(cè)表)

      怎么一鍵修復(fù)word啊(怎么一鍵修復(fù)注冊(cè)表)

    10. 在word文檔中使用項(xiàng)目符號(hào)和編號(hào)是為了什么(在Word文檔中使用什么可以設(shè)置行距和段間距)

      在word文檔中使用項(xiàng)目符號(hào)和編號(hào)是為了什么(在Word文檔中使用什么可以設(shè)置行距和段間距)

    11. 手機(jī)錄音聲音太小如何擴(kuò)大(手機(jī)錄音聲音太小了怎么變大)

      手機(jī)錄音聲音太小如何擴(kuò)大(手機(jī)錄音聲音太小了怎么變大)

    12. 華為快充消失咋辦(華為快充怎么不顯示了?)

      華為快充消失咋辦(華為快充怎么不顯示了?)

    13. 2p和1p+n的區(qū)別(2p和1p n)

      2p和1p+n的區(qū)別(2p和1p n)

    14. 路由器ap隔離什么意思(路由器ap隔離有什么用)

      路由器ap隔離什么意思(路由器ap隔離有什么用)

    15. 學(xué)校內(nèi)部網(wǎng)絡(luò)屬于什么(學(xué)校內(nèi)的網(wǎng)絡(luò)系統(tǒng)屬于)

      學(xué)校內(nèi)部網(wǎng)絡(luò)屬于什么(學(xué)校內(nèi)的網(wǎng)絡(luò)系統(tǒng)屬于)

    16. 手機(jī)內(nèi)屏壞了有危險(xiǎn)么(手機(jī)內(nèi)屏壞了有什么影響)

      手機(jī)內(nèi)屏壞了有危險(xiǎn)么(手機(jī)內(nèi)屏壞了有什么影響)

    17. 蘋(píng)果10和11的區(qū)別(蘋(píng)果10和11的區(qū)別在哪里)

      蘋(píng)果10和11的區(qū)別(蘋(píng)果10和11的區(qū)別在哪里)

    18. html查看器是什么(html如何查看)

      html查看器是什么(html如何查看)

    19. 縮印小抄怎么設(shè)置(縮印小抄設(shè)置)

      縮印小抄怎么設(shè)置(縮印小抄設(shè)置)

    20. 硬盤(pán)驅(qū)動(dòng)器屬于外存?(在微機(jī)中硬盤(pán)驅(qū)動(dòng)器屬于)

      硬盤(pán)驅(qū)動(dòng)器屬于外存?(在微機(jī)中硬盤(pán)驅(qū)動(dòng)器屬于)

    21. 微軟發(fā)布最新Win10 KB5005716補(bǔ)丁直接升級(jí)Win11(微軟發(fā)布新windows)

      微軟發(fā)布最新Win10 KB5005716補(bǔ)丁直接升級(jí)Win11(微軟發(fā)布新windows)

    22. 復(fù)制粘貼快捷鍵怎么用(復(fù)制粘貼快捷鍵失效了怎么回事)

      復(fù)制粘貼快捷鍵怎么用(復(fù)制粘貼快捷鍵失效了怎么回事)

    23. html(html+css網(wǎng)頁(yè)設(shè)計(jì))

      html(html+css網(wǎng)頁(yè)設(shè)計(jì))

    24. 個(gè)人普通發(fā)票多少錢(qián)
    25. 計(jì)稅依據(jù)什么意思
    26. 會(huì)計(jì)報(bào)稅
    27. 不良資產(chǎn)處置措施
    28. 信用減值損失是損益類(lèi)的收入類(lèi)還是費(fèi)用類(lèi)
    29. 工會(huì)經(jīng)費(fèi)與殘保金的取數(shù)是一致嗎
    30. 零申報(bào)還要抄稅嗎
    31. 產(chǎn)成品和半成品如何盤(pán)點(diǎn)
    32. 報(bào)銷(xiāo)必須是公司嗎
    33. 企業(yè)放貸利息收多少合適
    34. 存貨盤(pán)盈涉稅問(wèn)題
    35. 利潤(rùn)表中利潤(rùn)總額是什么
    36. 固定資產(chǎn)正常報(bào)廢如何處理
    37. 中秋員工福利費(fèi)會(huì)計(jì)分錄
    38. 收到公眾號(hào)申請(qǐng)的小額打款認(rèn)證怎么入賬?
    39. 員工的油費(fèi)補(bǔ)貼怎么算
    40. 企業(yè)所得稅收入大于增值稅收入的原因
    41. 企業(yè)繳納房產(chǎn)稅的依據(jù)
    42. 建筑行業(yè)增值稅稅率是多少
    43. 發(fā)票已認(rèn)證部分怎么撤銷(xiāo)
    44. 航天開(kāi)票系統(tǒng)清單流程
    45. 穩(wěn)崗補(bǔ)貼能享受多久
    46. 無(wú)法支付的其他應(yīng)付款可以用現(xiàn)金核銷(xiāo)嗎
    47. 公司房租押金收不回來(lái)賬務(wù)處理
    48. 人人有份類(lèi)似的詞語(yǔ)
    49. 應(yīng)收賬款貸方余額重分類(lèi)到哪
    50. mac系統(tǒng) 硬盤(pán)
    51. 住房公積金有什么用途和價(jià)值
    52. 預(yù)收房租費(fèi)用計(jì)入什么科目
    53. 非正常損失含義
    54. 其他綜合收益屬于什么類(lèi)
    55. 輔助生產(chǎn)成本的交互分配法
    56. vuecli websocket
    57. 增值稅常見(jiàn)賬務(wù)處理方法
    58. 挪威有鹿嗎
    59. php實(shí)現(xiàn)觀察者模式
    60. 房地產(chǎn)企業(yè)開(kāi)始退地的影響
    61. 小微企業(yè)免征增值稅政策2023
    62. 會(huì)計(jì)年報(bào)表怎么做
    63. 水利建設(shè)基金的計(jì)稅依據(jù)及稅率
    64. 不能抵扣的福利發(fā)票要勾選嗎為什么
    65. windows7基本使用教程
    66. 受托代銷(xiāo)商品的手續(xù)費(fèi)計(jì)入什么科目
    67. 增值稅減免稅在貸方
    68. 異地交稅怎么交
    69. 應(yīng)付賬款發(fā)生壞賬怎么辦
    70. 非獨(dú)立核算門(mén)市部銷(xiāo)售自產(chǎn)應(yīng)稅消費(fèi)品
    71. 認(rèn)繳意思
    72. 發(fā)票入賬的管理規(guī)定
    73. 固定資產(chǎn)報(bào)廢時(shí),后續(xù)未折舊額計(jì)入哪里
    74. 員工工傷申請(qǐng)流程
    75. 車(chē)輛買(mǎi)的商業(yè)險(xiǎn)全險(xiǎn),車(chē)輛出了事故,保險(xiǎn)公司怎么賠
    76. 房地產(chǎn)影響投資和消費(fèi),事關(guān)民生和發(fā)展
    77. 應(yīng)計(jì)入營(yíng)業(yè)外支出的有哪些
    78. 不得免征和抵扣稅額抵減額分錄
    79. 贈(zèng)送客戶(hù)樣品記什么費(fèi)用
    80. 收到貨款但未開(kāi)票怎么入賬
    81. 企業(yè)建賬的法律規(guī)定
    82. sql多表連接查詢(xún)(詳細(xì)實(shí)例)
    83. ubuntu設(shè)置u盤(pán)啟動(dòng)項(xiàng)
    84. MAC怎么將單獨(dú)一個(gè)應(yīng)用靜音
    85. solaris 11.4
    86. 快速任務(wù)欄
    87. ubuntu20設(shè)置ip
    88. rdesktop命令
    89. linux ssh rsa
    90. win7計(jì)算機(jī)快捷方式不見(jiàn)了
    91. securecrt設(shè)置英文
    92. Win10 Mobile Build 10586.xx將持續(xù)更新 WP8.1用戶(hù)可直升最新版
    93. bootstrap-treeview.js
    94. re engine引擎
    95. js對(duì)象用法
    96. u3d地形編輯貼圖
    97. unity3d物理現(xiàn)象模擬
    98. listview
    99. 稅控盤(pán)狀態(tài)
    100. 廣東省國(guó)家稅務(wù)總局稽查局局長(zhǎng)
    101. 減免所得稅額怎么算的
    102. 審計(jì)程序檢查的定義
    103. 聯(lián)通前面加什么可以隱藏號(hào)碼
    104. 免責(zé)聲明:網(wǎng)站部分圖片文字素材來(lái)源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)及時(shí)告知,我們會(huì)第一時(shí)間刪除,謝謝! 郵箱:opceo@qq.com

      鄂ICP備2023003026號(hào)

      網(wǎng)站地圖: 企業(yè)信息 工商信息 財(cái)稅知識(shí) 網(wǎng)絡(luò)常識(shí) 編程技術(shù)

      友情鏈接: 武漢網(wǎng)站建設(shè)