gpt4 book ai didi

coldfusion - 我可以通过什么方式强制结束 session ?

转载 作者:行者123 更新时间:2023-12-04 02:03:55 27 4
gpt4 key购买 nike

无论事件如何,我都想强制 session 在 30 分钟后结束。我首先想到的是这个(未经测试):

function onApplicationStart() application.sessionLife = 30;

function onSessionStart() session.timeStarted = now();

function onRequestStart() {
if ( dateDiff("n", session.timeStarted, now()) > application.sessionLife)
structClear(session);
}

还有哪些其他方法可以强制结束 session ?

显而易见的是 session cookie 会在 30 分钟后过期。但我不确定 session cookie 是否监听 sessionTimeOut sessting。

更新
我刚刚发现 StructClear() does not end the session .所以我想我应该让cookies过期。

最佳答案

像往常一样,Ben Nadel 已经在博客中给出了答案......

http://www.bennadel.com/blog/1847-Explicitly-Ending-A-ColdFusion-Session.htm

有几个选项,有些相当安全,有些使用隐藏的方法,这些方法不能保证在 future 版本的 ColdFusion 或其他 CFML 引擎中存在。你可能会发现我在他的帖子中被提及,因为我喜欢弄乱那些隐藏的方法。但是如果你想正确地做事(更多的 future 证明/引擎开关证明),我建议本的替代方法。

编辑

差点忘了,我创建了一个函数来使用另一种方法停止当前 session (在 Ben Nadel 的博客文章中没有提到)。它仍然是一个未记录的功能,但它是一个改进,因为它会立即停止 session ,而不是将其设置为 1 秒超时。

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

进一步编辑

只是简单地解释不同的方法,以防链接的网站消失。

总结在其轨道中停止 session 的方法......

  • 将 sessionTimeout 设置为 1 秒的值。
  • 标记目标 session (例如 session.remove = true)
  • 检测并设置低超时(application.cfc)if (StructKeyExists(session, 'remove') And aession.remove) {
    this.sessionTimeout = CreateTimeSpan(0, 0, 0, 1);
    }
  • 通过删除 CFID/CFTOKEN cookie 来删除客户端和 session 之间的关联。
  • 与上面类似,但使用 session.setMaxInactiveInterval(1)
  • 未记录,有效,但可能会在不同版本之间更改,恕不另行通知。
  • 更灵活,不必在 application.cfc 文件中包含代码。
  • 仍然必须删除cookie。
  • 强制 ColdFusion 立即删除 session 。
  • 更多地使用可能在版本之间中断的未记录功能。
  • 可以在任何地方使用,不必担心 cookie 或单秒超时。

  • 方法 3 的代码...
    <cffunction name="sessionStop" output="false">
    <cfset var local = StructNew() />
    <cfif Not StructKeyExists(application, 'applicationName')>
    <cfthrow message="Application.applicationName is missing." />
    </cfif>
    <cftry>
    <cfset local.sid = session.cfid & '_' & session.cftoken />
    <cfset local.jTracker = CreateObject('java', 'coldfusion.runtime.SessionTracker') />
    <cfset local.jTracker.cleanUp(application.applicationName, local.sid) />
    <cfcatch type="any">
    <cfthrow message="Error stopping session, may not exist." />
    </cfcatch>
    </cftry>
    </cffunction>

    关于coldfusion - 我可以通过什么方式强制结束 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836310/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com