Coldfusion 不同的会话超时长度

Coldfusion different Session timeout lengths

网站编辑需要较长的登录时间,由于登录依赖会话范围,目前会话周期为10小时。

这使我们在前端的性能很差。我怎样才能最好地将两者分开?

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

<cfif NOT StructKeyExists( session, "user" )>
<cfscript>
  StructDelete(cookie, 'cfid');
  StructDelete(cookie, 'cftoken');
  session.setMaxInactiveInterval(1);
</cfscript>

该网站很旧并使用 Application.cfm,我尝试添加另一个 Application.cfm,第一个 'includes',用于管理区域,但现在每个应用程序都有对要 create/use.

的 cookie 感到困惑

我看过

等资源

https://misterdai.wordpress.com/2010/06/15/cf-sessionstop-ending-a-cf-session/

http://www.bennadel.com/blog/1847-explicitly-ending-a-coldfusion-session.htm

我什至考虑过转换为 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 有元刷新代码。

如果您使用的是框架,欢迎使用这段代码。我在后端左侧有一个框架,可以导航到 cms 模块(页面、评论等)。

在左侧导航框架页面中:

<script type="text/javascript">
    setTimeout(function(){
        document.location.replace('nav.cfm');
    },900000);
</script>

导航每 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 ) />