SessionTimeout不会覆盖CF管理员

时间:2015-05-29 21:29:15

标签: coldfusion

我有一个简单登录的网站。 20分钟后,如果用户处于非活动状态,他的会话将会过期,如果他试图保存他的作品(通常是需要超过20分钟完成的书评),他就会退出并丢失所有内容。 / p>

代码已有六年了,我无法解决这个问题。我当时正在使用application.cfm,现在已将其替换为application.cfc:

<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中有一些完全不合适的东西,我就不会这样做。一点儿都很惊讶。

感谢。

1 个答案:

答案 0 :(得分:2)

根据ColdFusion documentation:&#34;您无法在[Application.cfc或Application.cfm]中设置超过管理员内存变量页面上设置的最大会话超时值的超时值。&#34;

由于您使用的是共享托管,如果您的主机不会增加超时(并且他们可能会赢得),您将不得不重新考虑您的应用流程。

一种可能的解决方法是使用定期的AJAX请求来保持会话处于活动状态。根据按键活动将请求绑定到JavaScript计时器。