在特定时间触发功能

时间:2019-10-08 00:04:47

标签: javascript jwt

问题是我的应用程序(C#后端/ JS前端)中实现了JWT身份验证。我希望在超过令牌过期后自动将用户重定向到登录页面(将其踢出)。

我正在研究如何实现这一目标,并且得出的结论是,我想要一种优雅的方式来在给定日期的特定时间触发函数。

const tokenExpiresIn = 10000; // <- token expires in 10 seconds

选项1

好,setTimeout

setTimeout( () => { /* do redirect */ }, tokenExpiresIn);

选项2

始终检查令牌到期

setInterval( () => { /* is the current time greater than the expiry time */ }, 1000);

我可以看到选项1 的效率更高,因为我不经常执行检查(例如选项2 是),但是如果刷新令牌,我将拥有添加代码以清除/更新interval。但是,选项2 有点吸引人,因为我已经拥有可以通过本地存储更新令牌/到期时间的逻辑。

关于触发在特定时间重定向页面的功能的优美方式,还有其他选择吗?

我已经在对服务器的每个请求中都验证了令牌,以便覆盖该部分,只是试图考虑一个远程用户禁令/闲置用户的情况。

1 个答案:

答案 0 :(得分:0)

setInterval和setTimeout都很棒,并且会根据其合同触发。

由于您正在寻找更多选择,因此这是我对内部网站所做的事情。

  1. 对所有API响应使用拦截器以捕获错误。您的情况是40倍。
  2. 每x秒在auth api上执行一次setInterval。 (流量可能会受到影响)
  3. 使用上次加载页面时的本地存储,并在x分钟后执行强制重定向。

希望对您有帮助。