實現直播app原始碼前端許可權設計,需要做什麼?
一直對直播app原始碼的許可權設計很感興趣,以前寫後端程式碼時,搞過許可權設計,挺有意思的,但是前端按鈕級別的許可權設計瞭解過,卻還沒具體實現過,在直播app原始碼開發中打算對許可權進行細分,先研究下前端的許可權吧。
許可權設計的出發點在於,讓直播app原始碼中不同許可權的使用者,看到的內容、可實現的操作是不同的。
到具體設計上來說,可以分為路由級許可權和按鈕級許可權,從實現的難以層度上來說,都挺簡單的,這篇部落格主要講直播app原始碼中按鈕級別的許可權控制。
按鈕級許可權需要做的是什麼?
做直播app原始碼的許可權控制,首先要知道要實現的目的是什麼。
按鈕級許可權控制比較簡單,根據身份不同,可以看到的按鈕、可操作的功能也不相同。
首先要進行身份的區分和校驗,可根據服務端下發的使用者許可權類別,提取出公共方法。
// ../utils/auth.js 檔案位置 //獲取當前客戶許可權 export function getCurrentAuthority(){ ... return ["admin"] } //校驗許可權 export function check(authority = []){ let current = getCurrentAuthority(); return current.some(item => authority.includes(item)) } //登入校驗 export function isLogin(){ const current = getCurrentAuthority(); return current && current[0] !== "guest"; }
兩種實現方法
抽離出公共方法進行身份提取和校驗後,在直播app原始碼的不同元件中就可以使用了,最粗暴的方法,就是直接使用 v-if 來進行瘋狂的判斷。
但是這種方法不優雅,而且會對原有就使用 v-if 的內容造成困擾,因此可以將許可權判斷進行使用上的封裝,主要有兩種方法,一是元件,二是指令。
1. 元件方式
既然 v-if 不太優雅,那麼是否可以將 v-if 的功能封裝呢,答案當然是可行的,我們只需要在直播app原始碼中需要許可權控制的內容外部再巢狀上一層元件,通過外層元件來判斷內層元件是否渲染,就可以實現我們所需要的 v-if 的能力。
關於這個許可權元件,我們可以進行思考下。
首先,許可權元件並不需要有具體的 dom 渲染,它的作用只是根據條件來判斷是否來渲染它巢狀的具體業務元件。這樣的話,它可以不具備 template 模板內容,只需要具體邏輯即可,這樣它可以只是純粹的函式式元件,通過引用封裝好的許可權校驗方法,來判斷props中所允許的許可權。
元件實現:
<script> import { check } from "../utils/auth.js"; export default { name: 'Authorized', functional:true, props: { authority:{ type:Array, required:true } }, render(h, context) { const { props, scopedSlots } = context; return check(props.authority) ? scopedSlots.default() : null }, } </script>
思路:
通過 props 傳遞允許的許可權,在 render 函式中,通過上下文取出 props 和 slot 插槽內容,通過 check 方法校驗 props 傳遞的許可權是否通過,根據結果渲染 slot 的內容,實現直播app原始碼許可權控制。
元件使用:
<template> <Authorized :authority="['admin']" > <other-components></other-components> </Authorized> </template>
注:Authorized 元件會在多個地方使用,可以進行全域性註冊,具體程式碼不展示
2.指令方式
使用元件方式進行直播app原始碼許可權控制,基本已經可以很好的滿足我們實現按鈕級許可權控制的需求了,只需要在需要控制許可權的按鈕外面新增元件。
不過每次都需要在外面巢狀元件,還是比較繁瑣的,我們可以參考下 v-if 進行自定義指令控制。
//./directives/auth.js import { check } from '../utils/auth.js'; function install(Vue, options = {}) { Vue.directive(options.name || 'auth', { inserted(el, binding) { if (!check(binding.value)) { el.parentNode && el.parentNode.removeChild(el); } } }) } export default { install }
思路:
接收自定義指令 binding 中傳遞的引數,通過 check 函式進行校驗,校驗未通過時,獲取當前指令所在節點的父節點,來刪除掉當前節點,實現直播app原始碼許可權控制。
指令註冊:
// main.js import auth from './directives/auth.js' Vue.use(auth)
指令使用:
<template> <other-components v-auth="['admin']"></other-components> </template>
優缺點
使用元件方式來實現許可權控制,在許可權修改後會比較靈活的渲染受控部分,同時使用時候會稍微繁瑣;
指令方式實現的直播app原始碼許可權控制,使用起來會比較簡潔,但是是通過刪減 dom 節點的方式實現的,因此只有在第一次時控制。
許可權在賦予後,不會隨意變動,可以根據直播app原始碼使用場景來選用兩種不同的方式。
本文轉載自網路,轉載僅為分享乾貨知識,如有侵權歡迎聯絡雲豹科技進行刪除處理
原文連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996194/viewspace-2848904/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- 一對一原始碼,前端頁面許可權和按鈕許可權控制原始碼前端
- 許可權設計
- 淺談許可權管理的設計與實現
- 前端許可權控制系統的實現思路前端
- learun通用許可權系統框架功能實現設計框架
- 管理系統之許可權的設計和實現
- Django(63)drf許可權原始碼分析與自定義許可權Django原始碼
- 遊戲陪玩系統原始碼的許可權設計,如何基於位運算實現?遊戲原始碼
- 許可權系統:許可權應用服務設計
- drf 許可權校驗設定與原始碼分析原始碼
- JavaWeb許可權設計原理JavaWeb
- android 許可權元件設計Android元件
- Laravel實現許可權控制Laravel
- 許可權系統:6個許可權概念模型設計模型
- 許可權系統:許可權應用服務設計Tu
- vue要做許可權管理該怎麼做?如果控制到按鈕級別的許可權怎麼做?Vue
- app直播原始碼如何實現直播間紅包功能APP原始碼
- app直播原始碼,android AES加密解密實現APP原始碼Android加密解密
- 授權許可權服務設計解析
- 直播app原始碼,定時開關,實現計時器功能APP原始碼
- 為什麼許可權授權很難?- osohq
- 無程式碼實現CRM角色許可權問題
- 資料許可權就該這麼設計,yyyds!
- 分散式系統中,許可權設計實踐分散式
- 直播app原始碼,HTML + jQuery 實現輪播圖APP原始碼HTMLjQuery
- PingCode Wiki 許可權設計之ACLGC
- Vue 前端應用實現RBAC許可權控制的一種方式Vue前端
- 設計公司如何實現圖紙許可權管理,防止圖紙洩密?
- 基於RBAC實現許可權管理
- Vue許可權路由實現總結Vue路由
- 從0實現RBAC許可權模型模型
- h5直播原始碼,使用者登入流程及許可權校驗H5原始碼
- 選單許可權和按鈕許可權設定
- 認證鑑權與API許可權控制在微服務架構中的設計與實現:授權碼模式API微服務架構模式
- 影片直播原始碼,前端canvas動態驗證碼實現原始碼前端Canvas
- 直播APP原始碼實現直播流程上需要注意的內容APP原始碼
- Vue管理系統前端系列六動態路由-許可權管理實現Vue前端路由