在下面的sceaio中,如何使用AJAX检查会话是否仍处于活动状态,然后将用户返回到登录页面?
理想情况下,我所追求的是每1分钟检查会话状态以查看用户是否空闲的某种方式。如果它们处于空闲状态且会话即将到期,我会暂时保存更改,然后当会话到期时,我会在用户从空闲状态返回之前自动将页面更改为登录屏幕。
是否可以在不使用setTimeOut()的情况下执行此操作?
答案 0 :(得分:4)
大多数,如果这可以在服务器端处理。
每当有服务器端用户活动 - 页面加载,ajax调用,无论如何,设置会话变量
Session["last_activty"]=DateTime.Now;
在您的AJAX调用和页面加载中(可以在需要身份验证的页面的母版页/嵌套母版页中执行此操作),请检查(伪代码)
if (DateTime.Now-DateTime.Parse(Session["last_activity"]) > 10 minutes)
Session["logged_in"]=false;
如果页面加载或webmethod / webservice方法根据上述内容确定用户已超时,则
a)重定向到登录页面(服务器端)或
b)将状态代码返回给您的ajax调用者,这将导致重定向或显示登录对话框。
注意:注意使用真实会话变量,因为它们在群集服务器环境中往往不能正常工作。这种类型的东西更适合你的数据库。
table Users
.ID
.last_activity datetime
.logged_in - calculated column which returns if GetDate()-LastActivity > 10 minutes.