【问题标题】:Prevent multiple connexion to my web application防止多重连接到我的 Web 应用程序
【发布时间】:2013-10-30 14:03:56
【问题描述】:

我想防止用户在同一浏览器(窗口或选项卡)中多次连接我的网络企业应用程序。

我怎样才能使用 Javascript 做到这一点?

【问题讨论】:

    标签: javascript connection browser


    【解决方案1】:

    您可以创建会话变量(日期和时间)并将其存储在 localStorage 中。在 window.load 上检查它,如果存在则关闭窗口,或者阻止进一步加载。

    编辑:

    我创建了一个完整的解决方案,也许将来我会找到一些用处:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>test</title>
        <script>
            (function () {
                var interval = 10000; //can be modified to be faster, now it's 10 seconds
                // localStorage is available everywhere
                // sessionStorage is available only in current page / tab, 
                // so we can allow page refresh
                if (localStorage.getItem("catch") && !sessionStorage.getItem("catch")) {
                    var date = new Date(parseInt(localStorage.getItem("catch"), 10));
                    if (Date.now() - date < interval) {
                        //prevent further loading, hide things etc.
                        document.write('catch');
                    }
                } else {
                    setInterval(function () {
                        var date = Date.now();
                        localStorage.setItem("catch", date);
                        sessionStorage.setItem("catch", date);
                    }, interval);
                }
            })();
        </script>
    </head>
    <body>
    </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      我可以想象一个使用 cookie 或 localStorage 的解决方案:

      1. 页面加载:
        • 检查X 是否作为cookie 或localStorage 存在。如果存在,则显示错误并重定向到错误页面。
        • 如果X 不存在,请继续。
      2. 在页面加载时(window.unloadwindow.onbeforeunload 事件)删除 X

      【讨论】:

      • 我已经使用 cookie 来做到这一点,但是当浏览器崩溃时(不要转到 window.unload),cookie 不会被删除..
      • 这就是为什么我说要存储一个日期时间,如果它不是最近的,这意味着window.unload过去没有运行,但你仍然可以让它们进入。
      • Rudy,您能逐步解释一下您的解决方案吗?
      • @wawanopoulos 我已经编辑了我的答案并添加了带有完整解决方案的代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2015-05-07
      • 2018-05-08
      • 2015-01-19
      • 2022-01-02
      相关资源
      最近更新 更多