实现直播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源码使用场景来选用两种不同的方式。

### 回答1: TV后端前端APP源码指的是电视节目的管理后台和前端APP的编码源代码。这些源代码是由开发人员编写并提供给想要使用的个人或企业,以帮助他们创建基于电视节目的应用程序。 电视后端通常负责处理与节目相关的数据,例如电视节目播放时间、节目信息、广告插入和数据搜集。电视后台还需要控制用户对电视节目的访问和使用权限开发人员可以根据特定需求进行定制开发,生成满足客户业务需求的服务端代码。 而前端APP则通常用于提供一个良好的用户体验,方便观众查看电视节目和节目信息。前端APP通常提供节目列表、电视播放器,还需要与后端进行交互,从后端获取数据并在界面上显示出来。开发人员可以自定义APP的UI/UX设计,让电视应用更具吸引力。 由于TV后端前端APP源码涉及复杂的电视业务和众多细节,开发难度和门槛相对较高。但是,尽管如此,一旦成功开发并发布,电视应用拥有广泛的使用基础,为开发者带来了更多机遇和利益。 ### 回答2: TV后端和前端APP源码是一个电视设备可以播放视频、音频和其他媒体资源的应用程序源代码。它们通常用于创建视频分享应用程序,提供电影、电视节目和其他流媒体媒体内容,以及连接用户交互的前端应用程序。 TV后端源码为应用程序提供了服务端功能,例如视频资源管理、用户权限管理以及对客户端请求进行响应。它们的主要功能是启动视频、音频或其他媒体资源,并确保它们在电视屏幕上正确播放。 TV后端源码还可以处理安全性方面的问题,确保只有经过授权的用户才能访问资源。 前端APP源码则提供客户端功能,这是一种用户可以在TV上交互的应用程序。这些应用程序可以通过遥控器或其他控制设备来操作,用户可以浏览不同的媒体资源,找到自己感兴趣的视频或音频,并在电视上进行观看和聆听。 综上所述,TV后端和前端APP源码是创建视频分享应用程序所需要的两个关键组成部分。它们可以帮助开发实现强大的视频分享应用程序,使用户可以享受各种类型的媒体内容,并在电视上方便地进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值