代码在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>
另外,我尝试了卸载或 beforeunload 脚本方法,但结果并不符合预期。
如果用户未在30秒内执行任何操作或用户关闭浏览器,则需要注销用户。
提前感谢。
答案 0 :(得分:0)
因为我看到var tick是本地的,并且在每个tick中定义,所以每秒调用超时:
function StartThisSessionTimer() {
secondTick++;
console.log(secondTick);
if (secondTick > timeInSecondsAfterSessionOut) {
clearTimeout(tick);
window.location = '/Account/LogOff/0';
}
tick = setTimeout("StartThisSessionTimer()", 1000);
}
尝试在超时的转发器范围之外分隔超时的初始化。 告诉我们是否有用。
韩国社交协会