在浏览器关闭时杀死会话

时间:2009-12-30 22:56:51

标签: session browser coldfusion application.cfc

我的会话名为“Session.MM_Username”。我希望在浏览器关闭时“杀死”它。有人可以解释我怎么做这个吗?作为参考,这是我的Application.cfc代码:

<cfcomponent>
    <cfset this.applicationname="cfGossip">
    <cfset this.applicationname="true">
    <cfset this.sessionManagement = true />
</cfcomponent>

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

您的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#" />

答案 2 :(得分:0)

请参阅此链接:http://thisara.me/2015/12/21/session-management-in-j2ee/

在j2ee会话中,通过在客户端和服务器之间传递一个名为jsessionid的令牌来维护。有两种方式可以分享这个;

  1. 在网址上传递jsessionid
  2. 在Cookie上传递jsessionid
  3. 如果jsessionid在用户浏览器上的会话cookie(保留在浏览器内存上)上维护,则在关闭浏览器后,所有会话都将被销毁。但是如果你维护一个存储在客户端pc的磁盘空间中的持久性cookie,会话将不会在关闭时销毁。

答案 3 :(得分:0)

如果有疑问,Ben有答案。 http://www.bennadel.com/blog/1131-ask-ben-ending-coldfusion-session-when-user-closes-browser.htm

基本上,&#34;你不能强制会话结束,因为会话不是正在运行的东西(就像你认为Windows应用程序正在运行一样)。这些都只是与不同用户相关联的内存空间块。我们所能做的最好的事情就是阻止用户使用&#39;浏览器在页面刷新或页面加载时与给定会话重新关联。这将使用户创建一个新会话,但在技术上不会结束旧会话。&#34;

只使用会话长度足够长的会话管理来完成用户可能正在做的事情,但不要太久以至于它活动了几天,

答案 4 :(得分:-1)

基本上,您需要创建一个“会话cookie” - 即没有到期日期的cookie。当浏览器窗口关闭时,它将被删除。

我不知道怎么用CF做这件事,但这可能会有所帮助:http://www.google.com/search?q=cold+fusion+session+timeout

可能通过设置:

this.sessiontimeout = ""