在aspx Webform应用程序中。
我已经设置了session.timeout
10分钟。
但是该网页每5分钟发送一次自动ajax请求(使用javascript计时器)
因此,即使用户闲置超过10分钟也不会发生会话超时。
如果用户保持空闲状态,则用户会话应在10分钟后过期,请勿考虑自动ajax请求。有没有办法检查上一次手动用户交互时间?
任何解决方案将不胜感激
答案 0 :(得分:1)
这是一个使用JQuery的简单脚本,用于处理mousemove和keypress事件。如果时间到了,页面将重新加载。
客户端:
<script type="text/javascript">
var idleTime = 0;
$(document).ready(function () {
//Increment the idle time counter every minute.
var idleInterval = setInterval(timerIncrement, 60000); // 1 minute
//Zero the idle timer on mouse movement.
$(this).mousemove(function (e) {
idleTime = 0;
});
$(this).keypress(function (e) {
idleTime = 0;
});
});
function timerIncrement() {
idleTime = idleTime + 1;
if (idleTime > 9) { // 10 minutes
// Here You'd have to have a little ajax call to server to set all session variable value as null.
}
}
function setAllSessionNull(){
//make ajax call to server to set all session variable value as null.
// redirect to login page
}
</script>
c#代码以获取所有会话并设置为空:
for (int i = 0; i < Session.Count; i++)
{
Session.Remove(Session.Keys[i]);
}