前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTSP协议网页无插件播放,匿名登录不显示设备资源如何解决?

RTSP协议网页无插件播放,匿名登录不显示设备资源如何解决?

作者头像
EasyNVR
发布2020-08-21 01:46:44
6940
发布2020-08-21 01:46:44
举报
文章被收录于专栏:EasyNVR

EasyNVR视频平台的登录方式有两种,一种是用户名登录,也就是需要输入用户名密码,一般在企业内部,管理人员可以设置可登录人员,并分配用户名和密码用于登录;另一种就是匿名登陆,这种登录方式相当于游客登录,匿名登录状态下,游客可以查看内容,但不能添加设备做配置,当然,实际使用时如果不需要此功能,在我们登录鉴权页面是可以关闭匿名登陆的。

今天,与大家分享的是TSINGSEE青犀视频团队在浏览器测试EasyNVR新版功能的时候,偶然发现在匿名登陆下,设备分组下并不显示设备资源,而在用户登陆下就能够正常显示。

我调出了开发者模式,通过浏览器观察调用接口的返回数据,可以看到使用匿名登陆查看接口返回的数据为空,所以在前端没有显示内容。

而使用管理员登录查看接口返回的数据是有内容的。

由此可知,是后端返回数据导致的使用匿名登录为空,从而导致前端设备分组资源为空。于是我看了下后端代码,发现是此处逻辑有问题,游客账号和管理员账号拥有一样的权限,缺少了对游客账号的判断。

代码语言:javascript
复制
if uname != defAdminUser {
   selectStr := fmt.Sprintf(`%s.label_id,%s.name as label_name`, labelChannelTableName, labelTableName)
   joinStr := fmt.Sprintf(`left join %s on %s.rid=%s.role_id left join %s on %s.camera_id=%s.id 
                left join %s on %s.camera_id=%s.id   
                                        left join %s on %s.label_id=%s.id`, roleChannelTableName, userRoleTableName, roleChannelTableName, channelTableName, roleChannelTableName, channelTableName,
      labelChannelTableName, labelChannelTableName, channelTableName, labelTableName,
      labelChannelTableName, labelTableName)
   wherestr := fmt.Sprintf(`%s.uid=?`, userRoleTableName)
   dbclient = dbclient.Table(userRoleTableName).
      Select(selectStr).
      Joins(joinStr).
      Where(wherestr, uid)
} else {
   selectStr := fmt.Sprintf(`%s.label_id,%s.name as label_name`, labelChannelTableName, labelTableName)
   joinStr := fmt.Sprintf(`left join %s on %s.camera_id=%s.id left join %s on %s.label_id=%s.id`,
      labelChannelTableName, labelChannelTableName, channelTableName, labelTableName, labelChannelTableName, labelTableName)
   dbclient = dbclient.Table(channelTableName).
      Select(selectStr).
      Joins(joinStr)
}

  修改逻辑后,修改代码为:

代码语言:javascript
复制
if uname != defAdminUser && uname != defGuestUser {
   selectStr := fmt.Sprintf(`%s.label_id,%s.name as label_name`, labelChannelTableName, labelTableName)
   joinStr := fmt.Sprintf(`left join %s on %s.rid=%s.role_id left join %s on %s.camera_id=%s.id 
                left join %s on %s.camera_id=%s.id   
                                        left join %s on %s.label_id=%s.id`, roleChannelTableName, userRoleTableName, roleChannelTableName, channelTableName, roleChannelTableName, channelTableName,
      labelChannelTableName, labelChannelTableName, channelTableName, labelTableName,
      labelChannelTableName, labelTableName)
   wherestr := fmt.Sprintf(`%s.uid=?`, userRoleTableName)
   dbclient = dbclient.Table(userRoleTableName).
      Select(selectStr).
      Joins(joinStr).
      Where(wherestr, uid)
} else {
   selectStr := fmt.Sprintf(`%s.label_id,%s.name as label_name`, labelChannelTableName, labelTableName)
   joinStr := fmt.Sprintf(`left join %s on %s.camera_id=%s.id left join %s on %s.label_id=%s.id`,
      labelChannelTableName, labelChannelTableName, channelTableName, labelTableName, labelChannelTableName, labelTableName)
   dbclient = dbclient.Table(channelTableName).
      Select(selectStr).
      Joins(joinStr)
}

修改过后匿名登陆的情况下也可以显示设备资源了:

EasyNVR流媒体解决方案

EasyNVR是由TSINGSEE青犀视频团队自主研发,它能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发,EasyNVR的主要建设目标是将各种各样的安防摄像机、NVR进行统一接入和管理,并控制流的按需输出,对全平台终端提供统一的标准H5流输出。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • EasyNVR流媒体解决方案
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档