跳转到第三方视频网站,播放视频的权限解决方案(不在第三方网站登录,用户体系不一致)

 

需求:在平台中需要填写一个视频地址(第三方视频播放地址),用户在平台购买该视频后,点击播放,可以跳转到第三方视频进行播放。跳转到第三方视频网站后,不需要在第三方网站登录。

目前上传培训视频是本地视频上传方式,现在需要增加填写URL(第三方培训视频播放地址)的方式。

URL的保存

之前上传本地视频的方式,上传成功后会生成一个videoid(1c87eb823c554d198fcb459fc60d1409这种格式),存入video_url字段。

对于填写URL第三方视频播放地址的方式,也存入video_url字段。

平台前端网页播放时,需要判断video_url的格式,如果以http开头,则跳转到第三方视频网站进行播放,否则在本平台播放。

URL播放安全控制

两个关键点:①购买后才可以播放。②当前登录人的播放链接,禁止其他人播放,只允许自己播放。

解决方案:

①用户登录平台后,进入人才培训相关页面

 点击”播放”按钮,调用后台申请播放凭证接口,接口内部处理逻辑如下

  • 验证用户是否已购买相应视频,未购买,则向前端返回信息提示用户先购买
  • 如果已购买,则生成一个播放凭证——播放凭证为不重复的序列号,只能一次性使用(使用:跳转到第三方视频播放地址播放视频时,需验证播放凭证是否有效,验证该播放凭证的有效性即为使用),播放凭证使用后即失效,而且最大有效期为10秒。
  • 生成带播放凭证的URL,并用AES-128-ECB加密后返回到前端。URL格式为第三方视频播放地址加播放凭证,如第三方视频播放地址为http://www.xxx.com/xxx,播放凭证为003f810e20b34da788af3e3d439b528c ,那么生成的URL为http://www.xxx.com/xxx?p=003f810e20b34da788af3e3d439b528c

             播放凭证的技术实现:

             唯一性——播放凭证序列号利用uuid生成,可以保证播放凭证的唯一性不重复。原生的uuid字符串去掉“-”后就是一个播               放凭证,如003f810e-20b3-4da7-88af-3e3d439b528c 去掉“-”后是003f810e20b34da788af3e3d439b528c。

             一次性——播放凭证生成后即放入redis中,key为播放凭证,value为用户id,并设置key的过期时间为10秒。该key被                   get一次后,随即删除该key使之失效。

             时效性——跳转到第三方视频播放地址后,在播放视频前需要回调平台接口,验证URL中的播放凭证,验证后,随即删               除redis中保存的该播放凭证。如果redis中的播放凭证没有被使用到,也会在10秒后自动过期。

②用AES-128-ECB解密后端返回的加密后的URL,并跳转到该URL,即第三方视频网站

③第三方视频网站播放视频

  • 首先验证URL中是否带有播放凭证,没带有则不允许播放,带有则调用平台接口验证URL中的播放凭证(平台接口会根据播放凭证为key去redis中get,如果有则有效,无则无效,get之后,删除该播放凭证即该key
  • 根据平台接口验证结果决定是否播放,验证失败提示无权限,验证通过则播放

 

④总体流程图

跳转到第三方视频网站,播放视频的权限解决方案(不在第三方网站登录,用户体系不一致)_第1张图片

你可能感兴趣的:(跳转到第三方视频网站,播放视频的权限解决方案(不在第三方网站登录,用户体系不一致))