【发布时间】:2016-06-20 19:30:37
【问题描述】:
当您在application.cfm 或application.cfc 文件中设置ColdFusion 会话时,您可以定义sessionTimeout,例如:
<cfapplication name = "appname"
sessionTimeout = #CreateTimeSpan(0, 0, 30, 0)# <!--- 30min timeout --->
sessionManagement = "yes">
我认为 ColdFusion 会话每次都会“延长”或“更新”:
- 用户导航到新的 ColdFusion 模板(.cfm 文件)
- 用户刷新 Coldfusion 模板(.cfm 文件)
- 用户以任何方式访问 ColdFusion 组件(.cfc 文件),包括通过在 .cfc 文件中运行
cffunction的 ajax 调用。
换句话说,如果用户执行上述任何操作(假设sessionTimeout 是 30 分钟,如上例所示),会话将在执行操作后 30 分钟到期——本质上是“延长”每次用户执行其中一项操作时,会话的生命周期将值设置为 sessionTimeout。
这种理解听起来正确吗?是否有任何操作可以“扩展”我缺少的 ColdFusion 会话?我列出的那些实际上是否像我认为的那样表现并“延长”会话?
【问题讨论】:
-
为了更好地理解,请从客户端/服务器的角度考虑,并在 http 请求等无状态环境中维护状态。如果客户端是浏览器,请删除 cookie,此时您将丢失会话。服务器不知道你是谁了。
-
是的,ColdFusion 就是这样知道将它的服务器端会话变量与哪个用户关联的。默认情况下,在服务器指定的一段时间后,ColdFusion 认为与 cookie 关联的会话太旧/过期。有一些操作可以将会话的
sessionTimeout重置为原始的sessionTimeout(也称为“更新”它),例如刷新 cfm 页面(在作为 HTML/JS 交付之前由服务器处理)访问新的 cfm 页面(也访问服务器)并访问 cfc(也访问服务器。)我只是想知道我是否错过了任何一个。 -
看起来(默认情况下)在 ColdFusion 中任何击中服务器的东西都会让会话有更多的时间“存活”。
-
你好像什么都懂。这是一个简单的好奇心问题还是您想要完成的事情?
-
纯学术。我正在开发一个小型 JS 库,以便我更容易地警告用户他们的 ColdFusion 会话到期,在他们的会话到期时将他们重定向到登录页面,并允许他们根据需要扩展/更新他们的会话到。我只是想确保我考虑了所有可能的更新 CF 会话的方法,因此我使用最好的方法来为服务器提供“心跳”。这是图书馆github.com/Ectropy/clockworkHeart
标签: session coldfusion session-timeout