【问题标题】:Need to clear session and logout user after 30 sec or after close browser需要在 30 秒后或关闭浏览器后清除会话并注销用户
【发布时间】:2017-01-31 06:44:35
【问题描述】:

代码在 MVC 中,而且每个请求都使用 ajax 调用,所以 url 没有变化。

如果用户不活动 30 秒,我将能够使用以下代码执行注销用户的首次操作。但在用户注销时无法执行操作。

<script>
    $(function () {
        $("body").on('click keypress', function () {
            ResetThisSession();
        });
    });
    var timeInSecondsAfterSessionOut = 30; // to change the session time out, change this value. Must be in seconds.
    var secondTick = 0;
    function ResetThisSession() {
        secondTick = 0;
    }
    function StartThisSessionTimer() {
        secondTick++;
        console.log(secondTick);
        if (secondTick > timeInSecondsAfterSessionOut) {
            clearTimeout(tick);
            window.location = '/Account/LogOff/0';
        }
        tick = setTimeout("StartThisSessionTimer()", 1000);
    }
    StartThisSessionTimer(); 
</script>

另外我尝试了 unloadbeforeunload 方法的脚本,但结果不正确。

如果用户在 30 秒内未执行任何操作或用户关闭浏览器,则需要注销用户。

提前致谢。

【问题讨论】:

    标签: javascript jquery asp.net-mvc


    【解决方案1】:

    正如我所见,var tick 是本地的,并且在每个 tick 中定义,因此每秒调用一次超时:

    function StartThisSessionTimer() {
                 secondTick++;
                 console.log(secondTick);
                 if (secondTick > timeInSecondsAfterSessionOut) {
                     clearTimeout(tick);
                     window.location = '/Account/LogOff/0';
                 }
                 tick = setTimeout("StartThisSessionTimer()", 1000);
             }
    

    尝试将超时的初始化分开,超出相同的超时转发器范围。 告诉我们是否有用。

    Tks

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-17
      • 2014-08-15
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 2013-06-02
      • 2020-12-27
      • 2016-11-08
      相关资源
      最近更新 更多