私はasp.net mvcアプリケーションを持っています。ユーザーが20分間アイドル状態になると、自動的にログアウトします。 また、ユーザーがブラウザ上でマウスを動かしている場合は、セッションタイムアウトを保持したいと考えています。 はこのために私はjquery mvcアプリケーションで非アクティブな場合、ホームページに強制的にリダイレクトする方法
<body onload="StartTimers();" onmousemove="ResetTimers();">
</body>
<script type="text/javascript">
var timoutNow = @Session.Timeout*60000; // Timeout in 2 mins.
var timeoutTimer;
// Start timers.
function StartTimers() {
// warningTimer = setTimeout("IdleWarning()", timoutWarning);
setTimeout("IdleTimeout()", timoutNow);
$.get("@Url.Action("ResetSession", "Home")", function() {
// debugger
timoutNow = @Session.Timeout*60000; // Timeout in 2 mins.
// debugger
setTimeout("IdleTimeout()", timoutNow);
});
}
// Reset timers.
function ResetTimers() {
clearTimeout(timeoutTimer);
StartTimers();
}
// Logout the user.
function IdleTimeout() {
window.location =path + "/Home/Logout" + window.location.search;
}
</script>
サーバ側としてのコードを書いていた:
public void ResetSession()
{
Session.Timeout = 1;
}
しかし、問題は、ユーザーが継続的にブラウザでマウスを移動しても、それは後に与えられた時間をログアウトするリダイレクトということです。
setTimeoutをtimeoutTimerに割り当てる必要があります。それ以外の場合、clearTimeout(timeoutTimer)は実際に何もしません。 'timeoutTimer = setTimeout(" IdleTimeout() "、timoutNow);' – noriMonsta