Coldfusion 会话超时未超出CF管理员的权限
我有一个简单登录的网站。20分钟后,如果用户处于非活动状态,其会话将过期,并且如果他试图保存其工作(通常是需要超过20分钟才能完成的书评),他将注销并丢失所有内容 这段代码已经有六年历史了,我一直无法解决这个问题。当时我正在使用application.cfm,现在已将其替换为application.cfc:Coldfusion 会话超时未超出CF管理员的权限,coldfusion,Coldfusion,我有一个简单登录的网站。20分钟后,如果用户处于非活动状态,其会话将过期,并且如果他试图保存其工作(通常是需要超过20分钟才能完成的书评),他将注销并丢失所有内容 这段代码已经有六年历史了,我一直无法解决这个问题。当时我正在使用application.cfm,现在已将其替换为application.cfc: <cfcomponent> <!--- Set up the application. ---> <cfset THIS.Name = "SCR" />
<cfcomponent>
<!--- Set up the application. --->
<cfset THIS.Name = "SCR" />
<cfset THIS.ApplicationTimeout = CreateTimeSpan( 0, 12, 0, 0 ) />
<cfset THIS.SessionManagement = true />
<cfset THIS.SessionTimeout = CreateTimeSpan( 0, 3, 0, 0 ) />
<cfset THIS.SetClientCookies = false />
<cffunction name="onRequestStart">
<cfargument name="requesturi" required="true"/>
</cffunction>
我的登录代码设置用户信息如下:
<cfif getLoginUser.recordcount eq 1>
<cfset session.user_id=getLoginUser.user_id>
<cfif getLoginUser.user_level_id eq 1>
<cfset session.user_type=1>
<cfelseif getLoginUser.user_level_id eq 2>
<cfset session.user_type=2>
<cfelseif getLoginUser.user_level_id eq 3>
<cfset session.user_type=3>
</cfif>
<cfset session.user_name='#name#'>
<cfif not isdefined('session.redirect_url')>
<cflocation url="my_account.cfm">
<cfelse>
<cflocation url="#session.redirect_url#">
</cfif>
</cfif>
查看cfApplicationSettings的输出可以确认这些设置,但20分钟的超时将继续进行,不会失败。我在共享主机上,无法访问CF管理员,但据我所知,这些设置应覆盖该权限。我唯一能覆盖的时间是如果我让sessiontimeout少于20分钟…如果我告诉它,它很乐意在一分钟内使会话过期
从ColdFusion 5开始,我对任何事情都有点不了解。(我相信主持人现在正在运行9),所以如果我的cfc中有什么完全不合适的东西,我一点也不会感到惊讶
谢谢。请参见:“您不能设置大于管理员内存变量页面上设置的最大会话超时值的超时值[在Application.cfc或Application.cfm中]。”
由于您使用的是共享主机,如果您的主机不增加超时(而且可能不会),您将不得不重新考虑您的应用程序流
一种可能的解决方法是使用定期的AJAX请求来保持会话活动。根据按键活动将请求绑定到JavaScript计时器