用户想要延长会话后增​​加会话超时时间吗?

时间:2018-11-01 01:40:36

标签: c# asp.net-mvc session-variables

用户登录后,我在Session中设置了用户数据,Session timeout0,SessionTimeoutDate。就像SeessionHelper.LoggedUser具有用户数据一样。

SessionHelper.LoggedInUser.SessionTimeout = HttpContext.Session.Timeout;
                    SessionHelper.LoggedInUser.SessionWillExpireOn = DateTime.Now.AddMinutes(HttpContext.Session.Timeout);

我在html页面中获取此会话值的时间间隔。

然后在js中,我将间隔设置为连续检查当前日期是否大于SessionWillExpireOn,如果有,则意味着会话超时我打开了弹出窗口,其中有两个按钮:扩展会话和终止会话。如果用户单击扩展按钮,那么我就这样打电话给Ajax以增加会话超时。

        $(document).ready(function () {
    myVar = setInterval(checkSession, 500);

    $('#btnExtend').click(function () {
        $.ajax({
            type: "GET",
            url: "/User/SetSession",
            cache: false,
            async: true
        }).success(function (data) {
            console.log('1');
            myVar = setInterval(checkSession, 500);
        }).fail(function () {
            console.log('2');
        });
    });
});

function checkSession() {
    if (new Date(moment(new Date()).format('MM/DD/YYYY HH:mm')) > new Date(moment(SessionWillExpireOn).format('MM/DD/YYYY HH:mm'))) {
        console.log('Session expried');
        $('#SessionExpireModal').foundation('reveal', 'open');
        clearInterval(myVar);
    }
}

将功能扩展会话增加2分钟

 HttpContext.Session.Timeout = 2;
            SessionHelper.LoggedInUser.SessionTimeout = HttpContext.Session.Timeout;
            SessionHelper.LoggedInUser.SessionWillExpireOn = DateTime.Now.AddMinutes(HttpContext.Session.Timeout);

在我开始检查sessionTimeout的间隔之后,setSession方法的成功之后,它将增加会话超时。  我的主要问题是增加会话超时的最佳方法,或者这是我可以减少代码的其他方式。因为在单击扩展按钮后,它将调用setSession方法将增加Session值和SessionTimeOut。但是在我的间隔函数中,我得到了先前值的sessionTimeout,而不是当前更新一次。如何克服此问题,以便在间隔函数中获取更新的会话超时值。 任何建议。

0 个答案:

没有答案