【问题标题】:What is a Coldfusion Session?什么是 Coldfusion 会话?
【发布时间】:2009-12-12 03:57:02
【问题描述】:

我使用 Coldfusion 会话已经有一段时间了,所以我知道它们是如何使用的,但现在我需要知道它们是如何工作的,这样我才能计划扩展我的网站。

Coldfusion 用户“会话”是否只是设置 2 个 cookie(CFTOKEN 和 CFID)和相关服务器端内存结构的快速方法? (SESSION 范围)它还有其他作用吗?我正在尝试确定与用户会话相关的开销与其他方法(如 cookie)的关系。

【问题讨论】:

    标签: session cookies coldfusion


    【解决方案1】:

    你对它们的理解基​​本上是正确的。尽管它们不受 cookie 的约束。 cookie 是令牌的记录。如果浏览器中未启用 cookie,则该令牌可以在 url 字符串中传递。

    我发现在会话中保存内容而不是 cookie 有两个主要优点:

    1. 您控制会话范围。如果没有您提供接口,人们就无法编辑会话范围内的数据。客户端可以修改 Cookie。
    2. 结构、数组、对象、网络会话(FTP、交换)等复杂数据可以存储在那里。

    它们的内存开销“低”,但这是一个相对术语。使用 ColdFusion Admin Server Monitor 深入了解您的会话实际使用了多少内存。

    【讨论】:

    • 虽然会话范围不能直接受到客户端的影响,但是如果修改了cookie就不会被欺骗吗?
    • 是的,丹是真的。会话可以被欺骗。使用 J2EE 会话更难做到这一点,您可以通过管理员启用它。但我的观点是,用户不能直接使用会话。即使他们进行了欺骗,他们仍然只能操纵应用程序允许他们操纵的内容,而不是用户可以完全操纵的 cookie。
    【解决方案2】:

    首先,Session 是范围:保持当前用户属性(如权限或首选项)的安全且有效的方式。不确定您在“其他方法”下是什么意思,但我怀疑您能否在 cookie 中保留复杂的数据结构(查询、对象、数组)。

    其次,应用服务器为您提供了非常方便的会话事件处理程序:onSessionStart() 和 onSessionEnd()。

    第三,会话可以很容易地共享和集群:在 CF 应用程序之间或在 CF 和 J2EE 之间。

    【讨论】:

    • 其他方法,例如存储在 cookie 或数据库中并与 cookie 绑定的数据。我没有为这个应用程序跟踪太多。会话范围最有意义,除非它的开销大于其他方法。
    【解决方案3】:

    会话是在 jvm 内存中的特定应用程序空间内分配的每个用户的内存空间。这两个 cookie 是指向该内存空间(的令牌)的指针。是的,使用会话(RAM、交换空间等)会产生开销,但除非您在会话范围内推送大量数据,否则应该不会那么糟糕。

    【讨论】:

      【解决方案4】:

      没有提到的会话的一个方面是它们有一个生命周期:默认为 20 分钟(不活动)。此生命周期可以由应用程序设置,但不能超过 ColdFusion Administrator 中设置的限制。

      如果内存使用是一个问题,则可以减少时间限制,尽管仍然有很多依赖于 Java 垃圾收集。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-31
        • 2011-10-27
        • 2015-10-12
        相关资源
        最近更新 更多