回调,触发每个用户操作

时间:2014-06-15 20:37:59

标签: javascript angularjs web

我想在AngularJS Web应用程序中实现超时功能。每当用户执行任何操作时,回调会将计时器设置为10分钟。当此计时器在客户端到期时,会向服务器发送超时请求。

如何实现从每个用户操作触发的回调?也许在整个页面/窗口上注册onclick和onkeydown监听器?

2 个答案:

答案 0 :(得分:0)

根据$rootScope的角度文档:

  

如果您希望在调用$ digest()时收到通知,则可以   使用$ watch()注册watchExpression函数,没有监听器。

我不确定是否在每个用户操作上调用了$digest,但它可能是一个很好的起点。

仅供参考 - 我如何实现用户超时如下:

  1. 通过服务器端API验证用户
  2. 让API将用户存储在具有滑动过期的缓存中并传回会话令牌
  3. 让每个受保护的API端点都需要会话令牌,并使用此端口从缓存中获取用户,从而重置过期计时器。
  4. 如果缓存中不存在用户,则返回客户端代码处理的403禁止错误,可能是通过将用户发送回登录页面。实际上我返回一个具有特定“用户超时”代码和消息的自定义403,以便我的客户端可以优雅地处理超时。
  5. 这应该适用于大多数单页应用程序,因为用户执行的任何操作都会导致状态更改,而大多数状态更改都涉及调用服务器来获取或保存内容。它错过了次要的用户操作,但我发现现实世界中使用这种技术有足够的分辨率才能有效。

答案 1 :(得分:0)

看起来像hackedbychinese.github.io/ng-idle做我需要的事情