用户登录后,我在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,而不是当前更新一次。如何克服此问题,以便在间隔函数中获取更新的会话超时值。 任何建议。