gpt4 book ai didi

javascript - c# 闲置 15 分钟后自动注销

转载 作者:行者123 更新时间:2023-12-03 03:29:32 26 4
gpt4 key购买 nike

下面的方法会在 15 分钟后注销用户。但问题是,即使用户处于事件状态,也会将其注销。

我正在寻找解决方案,当用户在整整 15 分钟内不事件时,该方法将把他注销,而不是该方法不会运行。

public void AutoRedirect()
{
int int_MilliSecondsTimeOut = (this.Session.Timeout * 900000);
string str_Script = @"
<script type='text/javascript'>
intervalset = window.setInterval('Redirect()'," + int_MilliSecondsTimeOut.ToString() + @");
function Redirect()
{
alert('Your session has been expired and system redirects to login page now.!\n\n');
window.location.href='../index.aspx';
}
</script>";
UtilityClass.RemoveCookie("login", Response);
ClientScript.RegisterClientScriptBlock(this.GetType(), "Redirect", str_Script);
}

最佳答案

与其使用一个运行 15 分钟的计时器来执行此操作,不如将间隔设置为 1 分钟,并在事件中倒计时一个计数器如何?

该计数器可以很容易地被其他事件重置,例如AJAX 调用、点击事件等可以通过 jQuery .delegate.on 方法轻松触发。

如果没有发生此类重置,则倒计时达到 0,您可以执行重定向。

var inactivityCountdown = 15;

intervalid = window.setInterval(function Redirect()
{
inactivityCountdown--;
if (inactivityCountdown<1) {
clearInterval(intervalid);
alert('Your session has been expired and system redirects to login page now.!\n\n');
window.location.href='../index.aspx';
}
}, 60*1000);

您可以看到,通过这种方式,可以在计数器inactivityCountdown到期之前随时轻松重置该计数器。执行重定向时不要忘记清除间隔。

在下面的代码片段中,我使用 10 秒而不是几分钟来进行更好的测试。在文本字段中输入内容或单击按钮重置倒计时。

您将收到消息,然后收到注销文本,您可以通过链接再次登录(这模拟重定向):

var initCountdownValue = 10;
var inactivityCountdown = initCountdownValue;
$(document).ready(function() {

$(document).delegate("#login", "click", function(e) {
location.reload();
});

function Logout() {
document.getElementById('mainpage').style.display = "none";
document.getElementById('loggedout').style.display = "";
// or window.location.href="/logout.aspx";
}

var intervalid = window.setInterval(function Redirect() {
inactivityCountdown--;
$("#counter").text(inactivityCountdown.toString());
if (inactivityCountdown < 1) {
clearInterval(intervalid);
Logout();
alert('Your session has been expired and system redirects to login page now.!');
}
}, 1 * 1000);

$(document).delegate(":input", "click change keydown", function() {
inactivityCountdown = initCountdownValue;
});

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<div id="mainpage" style="">
<input type="text"></input>
<input type="button" text="test"></input>
<div>
Counter:
<div id="counter"></div>
</div>
</div>
<div id="loggedout" style="display:none">
You are logged out. To login, click <a id="login" href="#">here</a>
</div>

当然,在生产环境中,您可以删除警报并将用户重定向到注销页面。这仅用于演示目的。

关于javascript - c# 闲置 15 分钟后自动注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46154075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com