gpt4 book ai didi

javascript - 构建一个在后台运行并通过页面导航持续存在的用户 session 计时器

转载 作者:行者123 更新时间:2023-11-30 06:15:55 25 4
gpt4 key购买 nike

我需要构建一个计时器来控制用户可以在我的网站上保持登录状态的时间,之后用户会自动注销。

问题是,我需要它在后台运行,这样当用户浏览我的网站时它仍然会运行并继续计数。

目前我正在考虑节省用户在 localStorage 或 sessionStorage 中的剩余时间:

sessionStorage.remainingTime = 900; 
// The user should be logged in for 15 minutes (15*60 = 900 seconds)

并创建一个 web worker 以保持每 1 秒从剩余时间中减去:

let countdownWorker = new Worker('Timer.js')

在我的 Timer.js 中,我会有以下代码:

// Subtract every second
setInterval(function() {
sessionStorage.remainingTime--;
if(sessionStorage.remainingTime === 0) {
// I store if my user is currently logged in sessionStorage
sesssionStorage.isUserLoggedIn = false;
}
}, 1000);

问题是:Web Worker 没有访问 sessionStorage 的权限。

问题是:我应该将 remainingTime 变量存储在其他地方,还是应该使用不同于 Web Worker 的其他 API?我需要一些可以访问 sessionStorage 的东西,因为我控制用户是否登录的变量存储在那里,而且由于项目限制我无法更改它。

最佳答案

网络 worker 是否需要访问 sessionStorage?为什么不在 webworker 中使用一个全局变量并在 session 过期时让它返回消息,或者如果你想在 session 达到某个阈值时显示超时消息。您可以让工作人员知道页面上何时有事件以延长 session 。

在旁注中,我建议在使用超时时使用过期日期而不是时间长度,因为当选项卡在后台时它会受到限制并且不会每秒运行一次。使用日期允许您在特定时间间隔执行 timeLeft = expiresAtTime - currentTime,以便同步回它应该在的位置。

关于javascript - 构建一个在后台运行并通过页面导航持续存在的用户 session 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56170937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com