首页 > 其他分享 >Net6实现ZLMediakit播放鉴权

Net6实现ZLMediakit播放鉴权

时间:2024-08-22 10:15:24浏览次数:13  
标签:ZLMediakit rtsp response hook api using Net6 data 鉴权

using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using ZLMediaKitHook.Utility;
using ZLMediaKitHook.Utilty;
using ZLMediaKitHook.Utilty.dto;
using ZLMediaKitHook.Utilty.dto.rtsp_auth;

namespace ZLMediaKitHook.Controllers
{
    /// <summary>
    /// ZLM HTTP HOOK API [hook] enable=1
    /// </summary>
    [Route("api/hook/[action]")]
    [ApiController]
    public class HookController : ControllerBase
    {
        /// <summary>
        /// 播放鉴权事件 
        /// on_play=http://127.0.0.1:8999/api/hook/on_play
        /// rtsp://127.0.0.1:554/live/test?token=123456 该方式需要在接口on_rtsp_realm返回response["realm"] = "";
        /// ws://127.0.0.1:80/live/test.live.flv?token=123456 在线播放器地址:https://jessibuca.com/player.html
        /// </summary> 
        [HttpPost]
        public string on_play([FromBody] BaseRequest data)
        { 
            // Params:token=123456 
            BaseResponse response = new BaseResponse();

            try
            {
                Logger.Info($"api/hook/on_play,data:{System.Text.Json.JsonSerializer.Serialize(data)}");

                DataMgr.CheckToken(data.Params, response); 
            }
            catch (Exception ex)
            {
                Logger.Error($"api/hook/on_play,errmsg:{ex.Message}");
            }

            return JsonConvert.SerializeObject(response);
        }

        /// <summary>
        /// 推流鉴权事件
        /// on_publish=http://127.0.0.1:8999/api/hook/on_publish 
        /// </summary> 
        [HttpPost]
        public string on_publish([FromBody] BaseRequest data)
        { 
            BaseResponse response = new BaseResponse();

            try
            {
                Logger.Info($"api/hook/on_publish,data:{System.Text.Json.JsonSerializer.Serialize(data)}");
            }
            catch (Exception ex)
            {
                Logger.Error($"api/hook/on_publish,errmsg:{ex.Message}");
            }

            return JsonConvert.SerializeObject(response);
        } 

        /// <summary>
        /// rtsp专用方鉴权,步骤1 
        /// on_rtsp_realm=http://127.0.0.1:8999/api/hook/on_rtsp_realm  
        /// rtsp://admin:[email protected]:554/live/test
        /// </summary> 
        [HttpPost]
        public string on_rtsp_realm([FromBody] BaseRequest data)
        {
            Dictionary<string, object> response = new Dictionary<string, object>();

            try
            {
                Logger.Info($"api/hook/on_rtsp_realm,data:{System.Text.Json.JsonSerializer.Serialize(data)}");

                response["code"] = 0;
                response["realm"] = "";// rtsp账户(admin,空代表不鉴权) 
            }
            catch (Exception ex)
            { 
                Logger.Error($"api/hook/on_rtsp_realm,errmsg:{ex.Message}");
            }

            return JsonConvert.SerializeObject(response);
        }

        /// <summary>
        /// rtsp专用方鉴权,步骤2
        /// on_rtsp_auth=http://127.0.0.1:8999/api/hook/on_rtsp_auth
        /// </summary> 
        [HttpPost]
        public string on_rtsp_auth([FromBody] Rtsp_AuthRequest data)
        {
            Dictionary<string, object> response = new Dictionary<string, object>();

            try
            {
                Logger.Info($"api/hook/on_rtsp_auth,data:{System.Text.Json.JsonSerializer.Serialize(data)}");

                if (data.Realm != data.User_Name)
                {
                    response["code"] = 1000;// 账号错误
                }
                else
                {
                    response["code"] = 0;
                    response["encrypted"] = false;
                    response["passwd"] = "123456";// rtsp密码
                } 
            }
            catch (Exception ex)
            { 
                Logger.Error($"api/hook/on_rtsp_auth,errmsg:{ex.Message}");
            }

            return JsonConvert.SerializeObject(response);
        } 
    }
}

 

标签:ZLMediakit,rtsp,response,hook,api,using,Net6,data,鉴权
From: https://www.cnblogs.com/chen1880/p/18373229

相关文章

  • .net core 手写一个url的鉴权
    思路::在startup.cs的configservice中配置自定义鉴权方式,在界面使用该方式本章节实现一个简单的自定义鉴权:要求每个url后面要有参数UrlToken并且值为liping-123456,才可以访问成功,否则失败 1:配置一个自定义鉴权的文件1publicclassCustomerAuthenticationConfig2{3......
  • .net core cookie 鉴权
    思路:在startup中的configservice设置cookie鉴权,在config方法中use鉴权,然后添加两个页面,一个登录页面,一个用户信息页面(登陆后才能访问,没有登录则返回失败或者需要登录) 1:添加一个cookie鉴权的方法1publicclassCookieAuthConfig2{3publicstaticvoidConfigureSe......
  • 《企业微服务实战 · 接口鉴权思路分享》
    ......
  • 【Playwright+Python】系列教程(八)鉴权Authentication的使用
    写在前面还是有些絮叨的感觉,官方翻译和某些博主写那个玩楞,基本都是软件直接翻译后的产物。读起来生硬不说,甚至有的时候不到是什么意思,真的是实在不敢恭维。到底是什么意思?就是你已经登陆过一次,在Session、Cookie未失效的情况下,登录过一次后,下次就不用再走一遍登录的过程,从而缩......
  • ASP.NET Core 鉴权授权四(自定义Session)
    实体模型publicclassBaseModel{publicintId{get;set;}}publicclassAuthorization:BaseModel{publicstringRoute{get;set;}publicstringAuthorizationName{get;set;}}publicclassUser:BaseModel{publicstringUserName{......
  • c# net6创建API项目 日志管理log4net的用法
    一、program.cs//配置log4netXmlConfigurator.Configure(newFileInfo("log4net.config"));二、公共类LogHelper.csnamespaceElecInvoice.Common{publicclassLogHelper{publicstaticreadonlylog4net.ILogloginfo=log4net.LogManage......
  • .NET6 独立模式部署应用程序(无需客户机安装指定版本.NET运行时)
    下图对于.NET开发人员一定不陌生,尤其是CS架构,客户电脑要运行基于.NET开发的程序,无论是使用C#,还是VB.NET、F#,发布后的程序的运行环境都需要有相应版本的.NET的运行时,否则应用程序将无法正常运行。BS架构下,在服务器上安装指定版本.NET运行时,工作量可以忽略不计。试想,如果是CS架构......
  • 麒麟V10 .NET6 部署教程
    1..NETCORE环境这里我用的是.NET6rpm-Uvhhttps://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpmyuminstalldotnet-sdk-6.0 2.上传文件然后解压FTP,我这里用rar所以要装一下yuminstallunrarunrarx你的项目.rar3.安装和配置nginxyu......
  • PHP如何实现登录认证和鉴权
    本文由ChatMoney团队出品在Web开发中,用户认证(Authentication)和授权(Authorization)是构建安全应用程序的核心组件。用户认证是验证用户身份的过程,确保用户是他们声称的那个人。而授权则是确定已认证用户是否有权访问特定资源或执行特定操作的过程。PHP框架通过提供内置机制或集......
  • linux安装.net6运行环境
    添加Microsoft包存储库。安装.NET之前,请运行以下命令,将Microsoft包签名密钥添加到受信任密钥列表,并添加Microsoft包存储库。打开终端并运行以下命令:sudorpm-Uvhhttps://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm安装SDK 如......