【问题标题】:Force User Logout in jquery ajax在 jquery ajax 中强制用户注销
【发布时间】:2013-07-01 07:21:03
【问题描述】:

我试图强制用户在关闭浏览器之前从系统注销。下面是我只能想出的代码。

 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script type="text/javascript">

        $(window).bind('beforeunload', function () {
            return 'Please LogOut';
        });

    </script>

我想做类似下面的事情。显示一个确认框,如果用户按下 OK 则进行 ajax 调用。

我尝试了下面的代码,但连确认框都没有出现。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script type="text/javascript">

        $(window).bind('beforeunload', function () {
            var x;
            var r = confirm("Please LogOut");
            if (r == true) {
                x = "LogOut";
                var url = "/User/logOut/";
                  $.ajax({
                    url: url,
                    data: { UserID: 1},
                    cache: false,
                    type: "POST",
                    success: function (data) {

                    },
                    error: function (reponse) {
                        alert("error : " + reponse);
                    }
                });
            }
            else {
                x = "Stay On Page!";
            }

        });

    </script>

【问题讨论】:

  • 您可能无法使用 beforeunload 事件来执行此操作。每个浏览器的行为都不同。 Chrome 会显示您的消息以及“离开此页面”和“留在页面上”选项。如果用户单击“离开此页面”,选项卡/浏览器关闭您的代码将无法获得句柄。您可以做的是在关闭窗口时清除所有会话 cookie
  • 为什么要强制用户注销?用户不喜欢被强迫你知道...对于你所面临的任何问题,Asp.net 肯定有比依赖用户退出更好的解决方案。
  • 如果浏览器崩溃或者用户结束进程会怎样?
  • @Qantas94Heavy 实际上这是为了跟踪我开发的应用程序的用户活动。客户想要一份关于已登录用户及其注销时间的报告。可能存在不会提交注销时间的情况,但我需要处理大多数情况

标签: javascript jquery asp.net ajax asp.net-mvc


【解决方案1】:

我们尝试了类似的方法,但是您无法检测到用户何时如此轻易地关闭了浏览器。

最简单的方法是使用会话作为用户访问。这意味着在每次调用时,您的客户端应该发送一些令牌,服务器端应该检查它。此令牌保存在客户端的 cookie/存储中(会话存储,但它仅作为会话在选项卡上工作),一旦用户关闭窗口/选项卡,它就会过期。

当然,您的服务器端应该支持会话。对于发送令牌,我建议使用授权标头,因为它可以在大多数开发平台上使用,如果您计划从 js 扩展到例如android 平台在未来的某个时候。

【讨论】:

  • 如果用户关闭选项卡/窗口 - 会话仅在 20 分钟后终止,不是吗?
  • 这取决于服务器端。
猜你喜欢
  • 1970-01-01
  • 2014-11-12
  • 2022-08-08
  • 2019-04-30
  • 2012-05-11
  • 2013-12-04
  • 2017-11-18
  • 2018-11-28
  • 1970-01-01
相关资源
最近更新 更多