当用户在ReactJS中处于非活动状态时如何自动注销?

时间:2016-11-30 12:47:19

标签: reactjs

我需要知道REACT JS或HTML5中是否有任何API在用户处于非活动状态时提供auto -log的功能。我的代码如下所示我不知道有什么问题它给我的错误startTimer是没有定义和不必要的绑定。请告诉我我哪里出错了

Sub MyUpperCase()

    Application.ScreenUpdating = False

    Dim cell As Range
    For Each cell In Range("$A$1:" & Range("$A$1").SpecialCells(xlLastCell).Address)
        If Len(cell) > 0 Then cell = UCase(cell)
    Next cell

    Application.ScreenUpdating = True


End Sub

2 个答案:

答案 0 :(得分:5)

接受的答案可能会为您完成这项工作,但导航路线之间的时间并不是真正的"不活跃的"时间。

react-idle可以做到这一点,阅读文档,你可以按照应有的方式去做。

答案 1 :(得分:4)

如果您使用react-router库添加前端路由配置,则只要用户导航到另一个页面,您就可以触发一个函数。

<Route path="/" onEnter={onUserNavigate} onChange={onUserNavigate}>
    ...
</Route>

然后,您可以让事件处理函数计算用户导航之间的时间。

N.B。这只是一个骨架代码(作为实际方法的原型)

function onUserNavigate() {
    let idleTime = getCurrentTime() - getPreviousNavTime();
    storeCurrentNavTime();
    if (idleTime > ALLOWED_IDLE_TIME)
        window.location.href = '#/security/logout';
}

所以,上面的函数假设,

  • 您有一种获取当前时间(getCurrentTime功能)
  • 的方法
  • 您有一种方法可以在用户导航到某个页面时存储和获取时间戳
  • 您有一个名为ALLOWED_IDLE_TIME的常量来存储用户在两页之间花费的最小允许空闲时间。
  • 您有一个注销网址(上面示例代码中的值#/security/logout
  • 如果不浏览react-router路径,则不希望用户与页面交互。例如,用户可以使用超出允许空闲时间的浏览器控制台与页面进行交互。

对于与时间戳相关的计算和方法,您可以使用任何JavaScript库,如momentjs

希望有所帮助。

更新部件周围有不必要的绑定}.bind(this), 1000);只需删除.bind(this)段。

另外,startTimer() {片段应该会给你语法错误。为此,您应删除startTimer() {行及其相应的结束}