大屏管理
# 大屏管理
# go-view平台
大屏展示使用了go-view,项目地址项目地址为:go-view (opens new window),这里我是使用了master-fetch分支,可以查看go-view项目文档,里面有整合的案例与后端项目。
因为go-view提供的后端也是使用的satoken作为权限认证的,所以整合起来也比较容易。
整合方式为:借鉴了go-view-serve的保存、发布方式,然后进行了接口重写。使得go-view可以直接与sana通信,通过携带的token信息进行认证,权限校验由本项目通过satoken来实现。 接口实现可以看sana的后端代码,接口路径一直是/api/go-view/**,尽量兼容goviwe的请求地址:

goview稍微修改了以下内容:
(1)我关闭了白名单校验

(2)增加了对url中token参数处理

(3)goview请求地址修改

5.最后要修改sana-web的配置文件增加goview的部署地址信息,实现从sana中的浏览器的窗口跳转,查看大屏信息

6.整体思路:
(1)将goview的请求地址修改为sana后端的请求地址,并增加对url中token参数的处理。
(2)通过对url中携带的token的处理,使得在获取大屏信息的时候将携带url中的token,从而实现权限认证(不在进行登录认证)
(3)如果没有对应的权限,则不允许操作:

(4)除了以上,未对goview进行其他任何代码的修改,核心是将goview与sana-web两个前端项目实现独立部署,互不干扰。 两者通过token进行关联,从sana-web页面中使用windows.open的方式进行弹出一个新的窗口,展示goview相关的数据。
7.部署方式:
使用nginx进行代理。
根据官网的信息将go-view打包后,配置ngix进行代理:
我是这么做的代理,仅供参考:

# 演示效果
1、演示效果:这里我只给了修改的权限
点击大屏设置菜单

可以看到页面跳转,并且携带了token信息。

点击编辑菜单。

可以看到页面跳转,

因为只给了修改权限,所以这个页面中的其他保存、发布等功能性的接口,无法使用。 举例说明:如果点击保存,会请求后端接口,但是这个用户认证的token没有保存的权限,所以后端会不允许请求,这样就限制了前端使用。方法有点low,如果有更好的方式欢迎一起交流
2、展示大屏内容
在大屏展示菜单中,发布的且有数据权限的用户可以看到大屏列表,

点击查看,就会展示出来发布后的链接,同样的也是通过token进行校验的

# 注意:
本项目是使用goview,不是二开goview。是将goview作为一个独立的服务,然后通过token进行联系。
对goview整合与对ZLMediaKit两者的整合方式基本类似,两者都是将项目独立部署。