React JS(非原生)是否有一种方法可以创建一个外部计时器,即使在窗口关闭后也可以强制用户注销



现在,我正在使用react空闲定时器库来让用户在一段时间不活动后注销。然而,当我关闭与我的应用程序相关的所有选项卡或窗口并等待空闲期,然后再次打开网络应用程序时,我仍然被视为活动用户。我想找到一种方法,如果用户在一段时间后关闭网络应用程序,就可以注销。

我尝试使用react native AppState,但我用create-rect应用程序启动了我的应用程序,并且我在让应用程序使用react本机时遇到了问题。

有什么建议吗?

如果用户关闭浏览器选项卡/窗口,就好像他们正在使用任务管理器杀死一个进程:应用程序不再有运行的实例,也不可能阻止这种情况的发生。因此,使用客户端方法不可能实现这样的注销机制

但是,有一些可能的解决方案可以满足用户在不活动时注销的要求,这在很大程度上取决于您使用的身份验证机制。

  • 如果您的应用程序仅为前端(并且不依赖任何后端服务(,您可以在本地存储中有一个"上次活动"时间戳,在每次操作时进行比较和更新,并在必要时使用户凭据无效
  • 对于基于会话的登录,您可以在用户关闭窗口时使会话过期(这应该是默认行为(。此外,您可以添加一个类似于"上次活动"字段的会话变量,该字段会在每次操作时更新,并在必要时使服务器端的身份验证状态无效
  • 如果您使用的是基于令牌的身份验证,您可以调整令牌到期期限,并定期重新发布新令牌(可能不是最佳做法,但可能有效…(

通常,在安全性方面,您应该始终倾向于依赖保存在应用程序服务器端的信息,而不是客户端的信息。浏览器中的信息很容易被攻击者操纵,而在服务器端检查是否强制注销,甚至在用户决定硬重置机器(或经历停电等(时也能正常工作。如果你的服务器端有一天不工作了…那么,你就有一些更大的问题了。

关于reactreact-native,尽管它们的工作原理基本相同,并且使用相同的框架范式,但它们有一个主要区别:它们是为不同的平台编译的。因此,根据我的经验和他们的技术基础,将其中一个组件用于另一个组件既不容易,也不建议使用。因此,这在很大程度上取决于您的用例,哪一个最适合使用。

即使这不是一个安全的&好的解决方案,我希望能给你一些关于你注销的可能性的指导。

最新更新