代码之家  ›  专栏  ›  技术社区  ›  stormdrain

javascript设置间隔会话管理

  •  0
  • stormdrain  · 技术社区  · 15 年前

    我正在进行一个基于会话的项目。我在想,与银行类似,我会创建一张支票,并为用户提供阻止会话超时的能力。

    我正在考虑创建一个setInterval来检查需要auth的空白页。如果计时器接近结束时间,它会弹出一个对话框,告知用户会话即将结束。一个“保持登录”按钮将重置计时器,并且还将为他们提供一个注销选项。如果设置的间隔从checker页面获得“401”,则当前页面将刷新到登录屏幕。

    这有意义吗?设置间隔会使浏览器陷入困境吗?

    旁白:基于用户交互的clearInterval最简单的方法是什么?我是否需要检查每个按键和/或鼠标事件?或者有没有更广泛的方法来检查用户是否与页面交互(比如焦点检查之类的)?

    坦卡。


    所以,我使用的框架有一些问题。。会话处理不是很好,因此更新会话超时似乎有问题,而不是总是根据登录后的时间而不是上次活动后的时间来超时。不管怎样,我已经处理好了。我现在想知道的问题是,通过检查会话是否仍然通过setInterval进行身份验证,会话将通过检查进行更新,因此会话将永远不会超时。或者,我错过了什么?


    never 在框架配置中,使用 setTimeout 唯一地

    function alerter(msg){
        //warn user session about to expire; give opportunity to save
    }
    function killSess(){
        window.location = '/logout';    
    }
    function sessTimer(time){
    timerID = window.setTimeout('killSess();',time);    
    }
    function observe(div){
        Event.observe(div, 'click', function(){
            clearTimeout(timerID);
            sessTimer(30000);
        });
        Event.observe('bodyDiv', 'keydown', function(e){
            clearTimeout(timerID);
            sessTimer(30000);
        });
    }
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   jkndrkn    15 年前

    这有意义吗?会

    这应该行得通。只要间隔相当大(几秒到一分钟),并且不会随着每次迭代而增加全局数据结构的大小,我不认为它会使浏览器陷入困境。

    基于用户的clearInterval 相互作用我需要检查一下你的行李吗 每次按键和/或鼠标事件?或 是否有更广泛的方法来检查 用户正在与页面交互 (像焦点检查之类的)?

    div

        2
  •  1
  •   Henrik Adolfsson    15 年前

    这非常有意义,而且只要确保在已注册的情况下不再注册,setInterval就不会让浏览器陷入困境。

    clearInterval 点击一个特定的按钮(“不,不要轮询浏览器”或“注销”),所以我不太明白你最后一段中的问题。。。?

    除此之外,我将在401时添加,您不应该刷新登录屏幕。只需通知用户会话似乎已丢失,这样用户就可以自行决定保存可能正在使用的任何内容,或者在新选项卡中再次登录。