1

我想限制连接到我的直播页面的限制用户,这样用户就不能在同一帐户下从不同位置共享密码和多次登录。

我不介意一个用户在家中使用两台不同的设备登录,例如电脑和谷歌电视。这让我认为基于源 IP 地址的限制是处理这个问题的正确方法。

问题是,如果用户登录,并且我记录了他们的 IP 地址,并限制他们仅从该 IP 登录,他们就无法更改位置。

使用 HTTP,在他们登录后,它是无连接的,所以我忘记了他们是否正在观看来自 CDN 的流。

这让我觉得如果用户登录到另一个位置,我应该在客户端使用 javascript 来断开播放器的连接。

这意味着我需要一种以合理可扩展的方式与登录客户端进行通信的方法。

你能建议一个合适的方法来处理这个问题吗?我觉得必须有一个简单且可扩展的解决方案。

4

1 回答 1

2

这实际上取决于您对绕过您的访问控制的人的敏感程度。

如果您对某些人绕过它们感到满意,那么您可以在客户端执行访问控制,并让客户端每 60 秒左右 ping 服务器一次,告诉服务器它仍在流式传输。然后在服务器中,将用户的 IP 地址存储在过期队列中。因此,如果玩家停止 ping 服务器,IP 地址将在 3 分钟后从队列中过期。通过 ping 服务器,我的意思是发送一个简单的 http GET 请求以保持会话打开。当用户关闭客户端时,ping 将停止,您的服务器将在 3 分钟后使该客户端的 IP 地址过期。此时,用户可以使用不同的 IP 地址登录。

重要的是要记住,精明的用户将能够在 Chrome 等浏览器中观看网络事件,并查看您的内容从哪里提供,并轻松绕过任何限制,因为您无法控制 CDN 本身。

如果您需要更严格的控制,则需要从服务器提供内容。然后,您绝对会知道客户端何时停止访问流。

可能有一个中间立场。如果您担心没有 CDN 的流式传输速度,您可以考虑查看 CloudFlare.com。CloudFlare 是一个 CDN 层,位于所有 http 请求的前面,甚至是动态请求。静态请求从边缘提供,就像普通的 CDN 一样,但动态请求通过 CloudFlare 的网络反向代理,每次都返回到您的服务器。如果您将流式传输请求设置为看起来像 CloudFlare 的动态内容,那么您将获得通过与边缘点的低延迟、高带宽连接进行流式传输的潜在好处,同时仍然能够单独跟踪用户。

于 2013-04-13T22:58:19.597 回答