我的会话称为“Session.MM_Username”。我想在浏览器关闭时“杀死”它。有人可以解释我该怎么做吗?作为参考,这是我的 Application.cfc 代码:
<cfcomponent>
<cfset this.applicationname="cfGossip">
<cfset this.applicationname="true">
<cfset this.sessionManagement = true />
</cfcomponent>
我的会话称为“Session.MM_Username”。我想在浏览器关闭时“杀死”它。有人可以解释我该怎么做吗?作为参考,这是我的 Application.cfc 代码:
<cfcomponent>
<cfset this.applicationname="cfGossip">
<cfset this.applicationname="true">
<cfset this.sessionManagement = true />
</cfcomponent>
使用 J2EE servlet 会话管理
请参阅幻灯片 30,或在http://www.12robots.com/index.cfm/2009/9/17/ColdFusion-Application-Security-at-the-Boston-CFUG--Last-Night观看连接记录
您的 CFID 和 CFTOKEN cookie 需要在会话 cookie 中设置,如下所示:
<cfapplication
sessionmanagement="Yes"
name="MyApplication"
setclientcookies="No"
sessiontimeout=#CreateTimeSpan(0, 0, 1440, 0)#>
<cfcookie name="CFID" value="#SESSION.CFID#" />
<cfcookie name="CFTOKEN" value="#SESSION.CFTOKEN#" />
当有疑问时,本有答案。 http://www.bennadel.com/blog/1131-ask-ben-ending-coldfusion-session-when-user-closes-browser.htm
基本上,“您不能强制会话结束,因为会话不是正在运行的东西(以您认为 Windows 应用程序正在运行的方式)。这些都只是与不同用户相关联的内存空间块。我们能做的最好的事情是防止用户的浏览器在页面刷新或页面加载时与给定的会话重新关联。这将使用户创建一个新的会话,但从技术上讲不会结束旧的会话。
只需使用会话长度足够长的会话管理来执行用户可能正在做的事情,但不会太长以至于它可以活动几天,
基本上,您需要创建一个“会话 cookie”——即没有到期日期的 cookie。当浏览器窗口关闭时,它将被删除。
我不知道如何使用 CF 做到这一点,但这可能会有所帮助:http ://www.google.com/search?q=cold+fusion+session+timeout
可能通过设置:
this.sessiontimeout = ""