angularjs

时间:2017-05-09 02:40:00

标签: angularjs node.js express

有没有办法使用Angularjs管理用户会话?我的意思是::

会话超时 - 系统空闲时。 警报(带有消息的弹出窗口,您希望继续(是或否))当会话即将到期时,可以选择恢复会话。 在会话过期时尝试发出请求时重定向(或任何其他操作)。  会话超时后,用户必须自动注销。

提前致谢。

1 个答案:

答案 0 :(得分:1)

尝试ng-idle。它是一个简单的组件,您可以在达到超时之前设置超时和警告时间。然后,您可以查询服务器以进行用户注销或类似的操作。

myApp.config(function(IdleProvider, KeepaliveProvider) {
  IdleProvider.idle(900); // 15 min
  IdleProvider.timeout(60);
  KeepaliveProvider.interval(600); // heartbeat every 10 min
  KeepaliveProvider.http('/api/heartbeat'); // URL that makes sure session is alive
});

myApp.run(function($rootScope, Idle) {
  Idle.watch();
  $rootScope.$on('IdleStart', function() { /* Display modal warning or sth */ });
  $rootScope.$on('IdleTimeout', function() { /* Logout user */ });
});

在上述配置中,当用户空闲900秒(不移动鼠标,按任意键或按钮等)时,显示警告。然后等待60秒并注销用户(向可能破坏服务器会话的服务器发送请求)。

为了确保服务器会话不会过期(即使用户正在做的一切都是移动鼠标),Keepalive服务将每10分钟向服务器发送一次请求。此时间必须小于服务器会话到期时间。

演示链接:http://hackedbychinese.github.io/ng-idle/