使用AJAX时检查会话超时
我有一个ColdFusion页面,用户可以打开一个模式并查看关于一行数据的更多信息。 但是,如果用户坐在页面上的时间超过默认的20分钟会话超时时间,则会发出错误,因为它正在查找会话变量并找不到它们。 我理解如何用服务器端代码来捕获这个问题,但我似乎无法获得AJAX调用来成功确定会话是否仍然存在。
这是用户点击按钮打开模式时触发的AJAX代码。 基本上它是检查会话是否与CFC中的函数存在。 我的问题是,它总是返回'有效'。
//this checks if the session is expired
function checkSessionExists() {
$.ajax({
//this is the that has function
url: 'components/Admin.cfc',
//POST method is used
type: "POST",
//pass the data
data: {
method: "checkSessionExists"
},
async: false,
success: function(response) {
//$('#loading').hide();
var obj = $.trim(response);
if (obj == 'expired') { //it's never expired
alert('Sorry, your session has expired.')
window.location.href = "logout.cfm";
return false;
}
else{
}
},
error: function(jqXHR, exception) {
alert('Uncaught Error.n' + jqXHR.responseText);
}
});
return false;
}
以下是CFC中的功能:
<cffunction name="checkSessionExists" access="remote" output="false" returntype="string" returnformat="plain" hint="I check if session is expired.">
<cfif NOT structKeyExists(session, "alive")>
<cfreturn "expired" />
<cfelse>
<cfreturn "valid" />
</cfif>
</cffunction>
我在考虑如果会话存在时询问CFC,它仍然存在会话变量,因为该页面在20分钟内未刷新。 所以...想知道如何将一个AJAX请求发送给CFC并在CFC中有一个函数重新评估会话变量。 任何帮助,将不胜感激谢谢!
我将取决于你如何设置你的session.alive价值。 请记住,只要活动存在于会话中,您的代码就会返回“有效”。 如果在会话初始化代码中设置session.valid,您将得到您所看到的响应。
对.cfm的任何请求都会导致会话超时值重置为now()+会话持续时间。 我过去曾经用它来:
然后循环重复。 这意味着如果您的用户正在与网站互动,他们的会话将保持开放,并且在他们正在做的事情结束时不会被抛出。 如果您的企业/网站会话政策允许,这可以是一个非常好的设置。
链接地址: http://www.djcxy.com/p/77301.html上一篇: checking session timeout when using AJAX
下一篇: node.js