一尘不染

Angular会话超时和管理

angularjs

有什么方法可以使用Angularjs管理用户会话吗?

  • 会话超时-系统空闲时。
  • 在会话即将到期时发出警报,并带有恢复会话的选项。
  • 如果会话已过期,则在尝试发出请求时重定向(或其他任何操作)。

拦截器可以解决这个问题吗?你能举个例子吗?

提前致谢。


阅读 525

收藏
2020-07-04

共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分钟向服务器发送一次请求。此时间必须少于服务器会话到期时间。

签出演示

2020-07-04