javascript – 停止让我的网站加载在多个标签上的人

前端之家收集整理的这篇文章主要介绍了javascript – 停止让我的网站加载在多个标签上的人前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望用户从他们浏览器中的一个标签浏览我的网站.如何才能做到这一点?我会使用 javascript和cookies吗?

例如,我有一个网站:www.example.com – 我希望我的客户只能通过一个浏览器的一个标签访问该网站.如果他们打开另一个选项卡并加载站点(或站点的​​子页面) – 我想要一个警报“无法打开多个实例”,然后将其重定向错误页面.

一旦注意到 – 如果用户将地址从www.example.com/action/door/mine.aspx更改为www.example.com – 应该能正常工作,因为用户处于相同(原始)选项卡.

任何帮助将不胜感激.提前致谢.

解决方法

EDIT2:

这是在this answer提到的确切的事情,你需要2个ID:

>一个随机的一个
>一个一致的(这将是我们的SSID,实际上,由于您限制单个浏览器的选项卡,最好从浏览器的唯一参数生成)

您可以从浏览器的用户代理生成一致的或从服务器端获取.两者都存储在服务器端.
随机存储在window.name属性中,这是tab特定的.
每1〜2秒钟发送一次心跳信息,包含一致的ID和随机的ID.如果服务器无法接收到心跳,它将清除数据库并取消注册死客户端.

在每个浏览器的请求下,检查该值的window.name.如果缺少,请检查服务器端是否上一个选项卡是否关闭(从数据库清除).

如果是,请为客户端生成一个新的对,如果否,拒绝他.

在我脑海中的两个建议:

>服务器端(更好):提供所有客户端,用户名和密码.请求他们首先访问您的网站以输入他们的凭据.然后在每个其他请求中,检查是否已经登录了具有所述凭据的用户.

  Client *
         |
         |
      Server ---> Check whether
                  Already logged
                     or not?
                  ______________
                   |          |
                  yes         no
                   |          |
                 permit     reject
                  him        him

>客户端:如果您真的需要强烈的检查,请使用evercookie在客户端的机器上存储已登录的cookie.

旁注:知道客户端的每一次尝试都不安全!客户端应该帮助服务器端,不应该被用作唯一的安全来源. even evercookies can be deleted所以,给我的第一个建议去.

编辑:

Evercookie真的很好地保存了最安全的僵尸饼干,但由于图书馆本身对于浏览器来说有点沉重(存储cookie每次都需要100ms以上),所以真的不推荐在真实世界的网络应用程序中使用.

如果您使用服务器端解决方案,请使用它们:

> Way around ASP.NET session being shared across multiple tab windows
> Kiranvj’s answer

猜你在找的JavaScript相关文章