如何使用JQuery和ColdFusion处理会话超时警告?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用JQuery和ColdFusion处理会话超时警告?相关的知识,希望对你有一定的参考价值。

我目前有JS功能,可以在我的单页应用程序中处理会话超时。第一次尝试似乎是我的最佳解决方案。只需在页面加载时触发此功能,并向服务器发送Ajax调用以保持会话处于活动状态。然后我找到了更好的解决方案。 ColdFusion具有onRequestStart()函数,每次用户重新加载页面或向服务器发送请求时都会触发该函数。我在该函数中设置了时间标志。这是一个例子:

<cffunction name="onRequestStart" returnType="boolean" output="false">
     <cfargument name="thePage" type="string" required="true">
     <cfset REQUEST.appName = 'Single Page Application'>
     <cfset REQUEST.lastHit = now()>
     <cfreturn true>
</cffunction>

在我的家qazxsw poi页面上,我使用qazxsw poi将lastHit转换为JS。这是一个例子:

.cfm

我想知道如何从最后一个时间戳开始计算30分钟?这样,每次用户向服务器发出请求时,此功能都会刷新。如果他们没有在服务器上击中28分钟,给他们一个警告并开始计算120秒。我想知道实现这一目标的更简单方法是什么?我看到JQuery有一些插件但不知道如何使用它或者该插件是否可靠。使用onRequestStart lastHit作用域值我会阻止向服务器发送Ajax请求,因为我有时间戳记用户和服务器之间的最新交互。如果有人可以提供一些建议或示例,请告诉我。谢谢。

答案

如果它是一个单页的站点,您可以在页面加载时启动JS计时器以显示警告:

toScript()

如果你想让会话无限期地保持活着:

<script type="text/javascript" language="JavaScript">  
     <cfoutput>
         var #toScript(REQUEST.lastHit, "lastHit")#  
     </cfoutput>
     // Check last hit on every request
     var getLastHitTime = new Date(lastHit).getTime();
</script>

一定要指向一个真正的CFM,即使它是一个空白文件。

以上是关于如何使用JQuery和ColdFusion处理会话超时警告?的主要内容,如果未能解决你的问题,请参考以下文章

如何在服务器上/同一域下的多个 ColdFusion 应用程序之间共享会话?

如何使用 spring-security 和 jQuery 处理过期会话?

如何在 jquery 脚本中输出 Coldfusion 变量?

Coldfusion 和 Jquery 结果表格式化

如何使用 ColdFusion 进行 AS3 远程处理

Coldfusion 中的多步骤表单都有哪些最佳实践?