-1

我已经创建了处理用户登录的 Web 应用程序,并在用户从应用程序注销时更新注销时间,但是当用户直接关闭 Web 浏览器或系统因某些问题关闭时,我无法更新用户注销时间。

请给出任何possible way to update user logout time关于这种情况的信息。

4

8 回答 8

4

假设客户端的javascript是一个webapp。

在这种情况下,您应该在浏览器关闭事件中发送请求

window.onbeforeunload = function(event) {

   //send  request to server .

}

喜欢阅读:想要检测浏览器关闭事件?

于 2013-07-09T12:05:47.207 回答
3

可能以下步骤可以帮助您更新注销时间。

1.为每个请求不断更新会话中的时间戳变量。
2.在会话超时期间获取变量值(用户最后访问时保持)并在注销记录中更新。

这可以在不依赖浏览器发送注销请求的情况下提供帮助。

于 2013-07-09T12:07:43.170 回答
2

您可以创建一个实现HttpSessionListener和注释的类,@WebListener()如下所示:

@WebListener()
public class MyListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {

    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
         Date lougOutDate=new java.util.Date();
    }
}

sessionDestroyed您检索断开日期的方法中

于 2013-07-09T12:13:41.240 回答
2

试试这个代码来实现

        window.onbeforeunload = function(event) {
            var isOK = confirm("Are you sure to Leave this Page?");
            if(isOK)
            {
                // try ajax for update your table   
            }

        }
于 2013-07-09T12:26:03.740 回答
1

你为什么不使用 TimeOut ?

有几种解决方案:

  • 暂停
  • 实现 HTTP COOKIE。检查下面的链接

http://en.wikipedia.org/wiki/HTTP_cookie

在您的特定情况下,它应该是 Session Cookie

会话 cookie 网站的用户会话 cookie[14](也称为内存 cookie 或临时 cookie)仅在用户阅读和浏览网站时存在于临时内存中。如果在 cookie 创建时未设置到期日期或有效期间隔,则会创建会话 cookie。当用户关闭浏览器时,Web 浏览器通常会删除会话 cookie。[15][16]

  • 按照建议使用 Javascript 做这些事情希望它有帮助:)
于 2013-07-09T12:10:00.503 回答
0

您可以尝试编写一些向服务器发送“用户注销”消息的 Javascript。$.unload()应该使用(如果您使用 jQuery)或绑定到unload浏览器的本机事件来触发此代码。

于 2013-07-09T12:06:34.570 回答
0

在这种情况下,无法准确获取注销时间,因为这可能是由于互联网连接丢失等原因造成的。

一些可能性:

  1. 在文档卸载时发送 ajax 请求以通知您的服务器(如 @Baadshah 和 @mthmulders 建议的那样)
  2. 在服务器上添加会话超时侦听器以设置会话超时时的注销时间 - 这样即使 ajax 没有到达服务器,您也会知道用户在最后几分钟内注销(取决于会话期间)
于 2013-07-09T12:07:33.060 回答
-1

在页面上使用带有 jquery 的 beforeunload 事件。

每当用户出于任何原因离开您的页面时,都会触发 beforeunload 事件。

例如,如果用户提交表单、单击链接、关闭窗口(或选项卡)或使用地址栏、搜索框或书签进入新页面,它将被触发。

您可以使用以下代码排除表单提交和超链接(其他框架除外):

var inFormOrLink = false;
        $(document).on('click','a', function() { inFormOrLink = true; });
        $(document).bind('submit','form', function() { inFormOrLink = true; });

        $(window).on('beforeunload',document, function(eventObject) {
            var returnValue = undefined;
            if (inFormOrLink == false) {
                //do your action

            }

        }); 

编辑:在这里找到答案:如何捕获浏览器窗口关闭事件?

于 2013-07-09T12:11:19.203 回答