Session Coldfusion不同的会话超时长度

Session Coldfusion不同的会话超时长度,session,coldfusion,coldfusion-11,Session,Coldfusion,Coldfusion 11,网站编辑需要较长的登录时间,由于登录时间取决于会话范围,当前会话时间为10小时 这让我们在前端表现不佳。我怎样才能最好地将两者分开 我找到了一种让它工作的方法,但是想考虑替代的解决方案,如果不是管理员用户,这个会话就过期了。 <cfif NOT StructKeyExists( session, "user" )> <cfscript> StructDelete(cookie, 'cfid'); StructDelete(cookie, 'cftoken');

网站编辑需要较长的登录时间,由于登录时间取决于会话范围,当前会话时间为10小时

这让我们在前端表现不佳。我怎样才能最好地将两者分开

我找到了一种让它工作的方法,但是想考虑替代的解决方案,如果不是管理员用户,这个会话就过期了。

<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**文件。