Session Coldfusion不同的会话超时长度
网站编辑需要较长的登录时间,由于登录时间取决于会话范围,当前会话时间为10小时 这让我们在前端表现不佳。我怎样才能最好地将两者分开Session Coldfusion不同的会话超时长度,session,coldfusion,coldfusion-11,Session,Coldfusion,Coldfusion 11,网站编辑需要较长的登录时间,由于登录时间取决于会话范围,当前会话时间为10小时 这让我们在前端表现不佳。我怎样才能最好地将两者分开 我找到了一种让它工作的方法,但是想考虑替代的解决方案,如果不是管理员用户,这个会话就过期了。 <cfif NOT StructKeyExists( session, "user" )> <cfscript> StructDelete(cookie, 'cfid'); StructDelete(cookie, 'cftoken');
我找到了一种让它工作的方法,但是想考虑替代的解决方案,如果不是管理员用户,这个会话就过期了。
<cfif NOT StructKeyExists( session, "user" )>
<cfscript>
StructDelete(cookie, 'cfid');
StructDelete(cookie, 'cftoken');
session.setMaxInactiveInterval(1);
</cfscript>
StructDelete(cookie,'cfid');
StructDelete(cookie,'cftoken');
session.setMaxInactivativeInterval(1);
该网站非常旧,使用Application.cfm,我尝试添加另一个Application.cfm,其中“包括”第一个,用于管理区域,但现在每个应用程序都对创建/使用哪个cookie感到困惑
我已经查看了以下资源:
及
我甚至考虑过转换为Application.cfc,但这是一个时间关键问题,其中有些古怪的遗留代码我没有时间调试。我们有一些页面,用户需要花费大量时间编辑,这可能会导致会话超时。在这些特定的页面上,我们通过在非常小的iframe中包含另一个页面来保持会话的活动性。此页面按指定的时间间隔执行元刷新 我们通过编写两个文件使其可重用。第一个,PreventTimeout.cfm的调用方式如下:
<cfinclude template="path goes here/PreventTimeout.cfml">
它有以下代码:
<cfparam name="RefreshMinutes" default="15" type="integer">
<cfset RefreshSeconds = RefreshMinutes * 60>
<cfoutput>
<iframe height="1" width="1"
src="path goes here /PreventTimeoutIFrameContents.cfm?
RefreshSeconds=#RefreshSeconds#">
</iframe>
</cfoutput>
PreventTimeoutIFrameContents.cfm具有元刷新代码 我们有一些页面,用户需要花费大量时间编辑,这可能导致他们的会话超时。在这些特定的页面上,我们通过在非常小的iframe中包含另一个页面来保持会话的活动性。此页面按指定的时间间隔执行元刷新 我们通过编写两个文件使其可重用。第一个,PreventTimeout.cfm的调用方式如下:
<cfinclude template="path goes here/PreventTimeout.cfml">
它有以下代码:
<cfparam name="RefreshMinutes" default="15" type="integer">
<cfset RefreshSeconds = RefreshMinutes * 60>
<cfoutput>
<iframe height="1" width="1"
src="path goes here /PreventTimeoutIFrameContents.cfm?
RefreshSeconds=#RefreshSeconds#">
</iframe>
</cfoutput>
PreventTimeoutIFrameContents.cfm具有元刷新代码 如果您使用的是框架,欢迎使用这段代码。我在后端左侧有一个框架,可以导航到cms模块(页面、评论等) 在左侧导航框页面中:
<script type="text/javascript">
setTimeout(function(){
document.location.replace('nav.cfm');
},900000);
</script>
setTimeout(函数(){
文件.位置.替换('nav.cfm');
},900000);
导航每15分钟重新加载一次。这是默认30分钟会话计时器的一半。因此,当cms后端打开时,会话不会过期。
因为只有左侧导航框被重新加载,所以内容框(可能带有打开的文本编辑器)永远不会被覆盖。更改不会丢失。如果您使用的是框架,欢迎使用这段代码。我在后端左侧有一个框架,可以导航到cms模块(页面、评论等) 在左侧导航框页面中:
<script type="text/javascript">
setTimeout(function(){
document.location.replace('nav.cfm');
},900000);
</script>
setTimeout(函数(){
文件.位置.替换('nav.cfm');
},900000);
导航每15分钟重新加载一次。这是默认30分钟会话计时器的一半。因此,当cms后端打开时,会话不会过期。
因为只有左侧导航框被重新加载,所以内容框(可能带有打开的文本编辑器)永远不会被覆盖。更改不会丢失。最好的方法是将前端和管理分离为两个不同的应用程序。 因为您不想转换为Application.cfc(解决方案如下),所以可以在Application.cfm中进行转换
<cfapplication name="ApplicationName"
sessionmanagement="Yes"
sessiontimeout="#CreateTimeSpan('0','4','0','0')#">
用于Application.cfc
<cfset this.sessionManagement = true />
<cfset this.sessionTimeout = createTimeSpan( 0, 0, 5, 0 ) />
最好的方法是将前端和管理分离为两个不同的应用程序。 因为您不想转换为Application.cfc(解决方案如下),所以可以在Application.cfm中进行转换
<cfapplication name="ApplicationName"
sessionmanagement="Yes"
sessiontimeout="#CreateTimeSpan('0','4','0','0')#">
用于Application.cfc
<cfset this.sessionManagement = true />
<cfset this.sessionTimeout = createTimeSpan( 0, 0, 5, 0 ) />
由于两个应用程序都需要使用相同的应用程序变量,因此我将它们移动到一个新文件Application_variables.cfm中,然后将其包含到这两个应用程序中。当我包含一个已经定义了的应用程序文件时,它导致了一些冲突。因为应用程序的超时只设置了一次,所以当管理员登录到后端时,您可以重置它(增加)吗?这样您就不会有两个会话的开销,也不必管理两个application.c**文件。因为两个应用程序都需要使用相同的应用程序变量,所以我将它们移动到了一个新文件application_variables.cfm中,然后我将其同时包含在这两个文件中。当我包含一个已经定义了的应用程序文件时,它导致了一些冲突。因为应用程序的超时只设置了一次,所以当管理员登录到后端时,您可以重置它(增加)吗?这样您就不会有两个会话的开销,也不必管理两个application.c**文件。