【发布时间】:2013-04-13 02:01:38
【问题描述】:
我创建了以下 Application.cfc 并且除了一件事之外一切正常。我试图让 Application.cfc 在一段时间不活动后注销。但是,我对 ApplicationTimeout 或 SessionTimeout 的努力都没有奏效。
有人有什么建议吗?
谢谢
<cfcomponent>
<cfset This.name = "AndWhat">
<cfset This.sessionManagement="True">
<cfset This.loginstorage="session">
<cfset This.datasource = "database">
<cfset This.ormenabled = "true">
<cfset This.applicationTimeout = createTimeSpan( 0, 0, 1, 0 )>
<cfset This.sessionTimeout = createTimeSpan( 0, 0, 1, 0)>
<cffunction name="onRequestStart" access="remote" >
<cfif IsDefined("Form.logout")>
<cflogout>
</cfif>
<cflogin >
<cfif NOT IsDefined("cflogin")>
<cfinclude template="loguser.cfm">
<cfabort>
<cfelse>
<cfif cflogin.name IS "" OR cflogin.password IS "">
<cfoutput>
<script type="text/javascript">
alert("Um, Really?! Please supply a valid username and password!");
</script>
</cfoutput>
<cfinclude template="loguser.cfm">
<cfabort>
<cfelse >
<cfquery name="myNewLoginQuery" dataSource="database">
SELECT username, password, policy
FROM people
WHERE
username = '#cflogin.name#'
AND password = '#cflogin.password#'
</cfquery>
<cfif loginQuery.policy NEQ "">
<cfloginuser name="#cflogin.name#" Password = "#cflogin.password#">
<cfelse>
<cfoutput>
<script type="text/javascript">
alert("Um, Really?! Please supply a valid username and password!");
</script>
</cfoutput>
<cfinclude template="loguser.cfm">
<cfabort>
</cfif>
</cfif>
</cfif>
</cflogin>
</cffunction>
</cfcomponent>
【问题讨论】:
-
不知道,但不应该在
onSessionStart()而不是onRequestStart()上管理以会话为中心的东西吗?如果可以避免的话,我也可能不会打扰<cflogin>。它真的没有什么好处。 -
只是一个随机猜测:尝试为应用程序超时和会话超时设置不同的时间跨度。应用程序通常是几个小时,会话是 30 分钟左右。目前它们在您的代码中是相同的,这可能是问题的根源。
-
另外,你怎么知道超时不起作用?我建议实现
onSessionEnd()处理程序并使用cflog记录超时。您将获得更多研究信息。
标签: coldfusion session-timeout coldfusion-10 application.cfc