【问题标题】:AngularJS: Trigger logout automatically when browser closedAngularJS:浏览器关闭时自动触发注销
【发布时间】:2015-04-16 14:11:45
【问题描述】:

我正在尝试在 AngularJS 中实现登录身份验证模块。现在我要实现注销了。

退出:

我正在更新SessionHistory 表中的登录、注销和会话信息,主要是为了不允许单个用户在特定时间进行 2 个不同的会话。

所以,更新注销信息的功能应该被触发如下,

  1. 当用户从应用程序中注销时。
  2. 当用户空闲时(会话超时)。
  3. 浏览器关闭时。

我做到了第一点,第二点,我会设法做到(在 stackoverflow 中也可以找到许多文章和问题)。

但我不确定当浏览器关闭时如何触发注销功能自动更新数据库。我没有设法得到任何文章。请帮我解决一下这个。我也是 AngularJS 的新手

提前致谢。

【问题讨论】:

    标签: javascript html angularjs session


    【解决方案1】:

    你需要检测浏览器/标签页关闭是-$window.onbeforeunload函数,然后删除服务的(localstorage),在angular.run中注册$window.onbeforeunload,下面是一个例子:

    angular.module('app', [])
      .controller('exitController', function($scope, $window) {
        $scope.onExit = function() {
         $localStorage.$reset();//it will delete all the data from localstorage.
        };
    
       $window.onbeforeunload =  $scope.onExit;
      });
    

    请注意:即使打开了多个标签,这也会注销。

    【讨论】:

      【解决方案2】:

      window.onbeforeunload = logmeout();

      【讨论】:

      • 感谢您的快速回复:) 看到这个答案,我觉得我的大问题很容易解决。一旦我完成实施,将接受您的回答。
      • 谢谢。我在浏览器关闭时将其用于所有注销。它确保注销的服务器事件仍然被触发。
      • 更多角度的方式是使用 $window。功能上没有区别,但在测试中省了一些麻烦。docs.angularjs.org/api/ng/service/$window
      • 是的,如果你在 Angular 领域,使用 $ scopes 很好。
      • @judson-terrell:现在我有一个问题。如果我在带有返回消息的 html 页面中添加window.onbeforeunload,它就可以工作。但是如何用这个调用角度函数?,如果我将“window.onbeforeunload”放在主控制器中,它仅在控制器更改时起作用,而不是在浏览器关闭时起作用。所以它不起作用。如果我在角度之外写注销,我无法获得usernamesession 信息。甚至我使用的$cookieStore 也只能在角度范围内工作。如何解决这个问题呢?我做错了吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 2012-04-24
      • 2017-01-05
      • 2020-10-23
      • 1970-01-01
      • 2014-02-13
      相关资源
      最近更新 更多