C#MVC使用jquery创建一个基于定时器的自动注销
本文关键字:定时器 注销 一个 jquery 使用 创建 C#MVC | 更新日期: 2023-09-27 17:58:39
如何创建一个jquery脚本,以便在一段时间的不活动后自动注销用户?或者有一个jquery插件可以做到这一点?它需要做一些类似的事情:
- 使用setTimeout创建计时器(例如30分钟)
- 每次用户与页面交互时重置超时
- setTimeout到期后,使用ajax在服务器上调用/logoout操作(asp.net mvc)
- 显示模式/灯箱对话框,告知用户再次登录
这里需要考虑几个不同的方面。首先,如果用户只是关闭浏览器,或者用户正在使用的计算机死亡,会发生什么?如果用户在30分钟内访问该页面,该用户是否仍应登录?
假设用户无论如何都应该登录30分钟。最简单的启动方法是在身份验证cookie上设置cookie超时。请记住在刷新每个页面时更新超时。并使用jQuery计时器来检查cookie是否仍然有效,或者只跟踪用户的登录时间。
因此,jQuery计时器,您可以在每个页面上加载刷新cookie,然后只检查计时器/延迟是否执行,如果执行,则删除cookie并显示模式框。
有很多方法可以做到这一点,使用计时器是一种方法。
$(this).oneTime(1800 , function() {
location.href='/logout'; // redirects to logout page.
});
另一种方法是使用服务器端检查,但你不会得到这个模型框,正如我所说,有很多方法,这完全取决于你的偏好。
我知道这是一个非常古老的问题,但对于寻找类似解决方案的人来说,如果他们在特定时间段内处于空闲状态,则可能会很有用
http://www.dotnetfunda.com/articles/show/3130/automatically-logout-when-user-is-idle-for-sometime
链接可能会消失,所以这里是代码-
<script>
$(function () {
$("body").on('click keypress', function () {
ResetThisSession();
});
});
var timeInSecondsAfterSessionOut = 30; // change this to change session time out (in seconds).
var secondTick = 0;
function ResetThisSession() {
secondTick = 0;
}
function StartThisSessionTimer() {
secondTick++;
var timeLeft = ((timeInSecondsAfterSessionOut - secondTick) / 60).toFixed(0); // in minutes
timeLeft = timeInSecondsAfterSessionOut - secondTick; // override, we have 30 secs only
$("#spanTimeLeft").html(timeLeft);
if (secondTick > timeInSecondsAfterSessionOut) {
clearTimeout(tick);
window.location = "/Logout.aspx";
return;
}
tick = setTimeout("StartThisSessionTimer()", 1000);
}
StartThisSessionTimer();