Session ColdFusion:何时定义会话变量?

Session ColdFusion:何时定义会话变量?,session,coldfusion,session-variables,coldfusion-9,Session,Coldfusion,Session Variables,Coldfusion 9,当用户请求一个页面时,是否为该用户启动会话?据我所知,一个会话将在您发出页面请求后立即启动 如果是这种情况,什么时候创建会话变量?i、 e.用户名、密码、首选项等。。。随时都可以?配置和使用会话变量的基础是 会话基本上是客户机和应用程序之间的逻辑关系,因此从客户机对应用程序的第一个请求中可以使用会话变量,并且会话通常使用唯一标识会话的cookie在请求之间持久化,尽管这也可以通过在url中传递标识符来实现。值得注意的是您的会话超时设置,例如,您可能希望为未设置Cookie的机器人程序/爬虫程序提

当用户请求一个页面时,是否为该用户启动会话?据我所知,一个会话将在您发出页面请求后立即启动


如果是这种情况,什么时候创建会话变量?i、 e.用户名、密码、首选项等。。。随时都可以?

配置和使用会话变量的基础是


会话基本上是客户机和应用程序之间的逻辑关系,因此从客户机对应用程序的第一个请求中可以使用会话变量,并且会话通常使用唯一标识会话的cookie在请求之间持久化,尽管这也可以通过在url中传递标识符来实现。值得注意的是您的会话超时设置,例如,您可能希望为未设置Cookie的机器人程序/爬虫程序提供较短的超时,从而为每个页面请求()启动新会话。

是用户的会话范围是在第一次请求时设置的。但是,它取决于您的偏好,即何时要设置各种标志和值。不过,您可能不想将密码放在会话作用域中

我喜欢做的是将特定于用户的值放入用户结构中。因此,在请求启动时,我会检查变量,如果它不存在,则进行设置。例如

<cfif not structkeyexists(session, "user")>
    <cfset session.user = {
        authorized = false
        , admin = false
        , username = ''
        , accountid = ''
        <!--- etc --->
    } />
</cfif>


哦,我很喜欢这种方法,丹。在PHP中,除非您明确告诉会话启动,否则会话不会启动。这就是我困惑的地方。但是为什么不将结构创建放在应用程序启动或会话启动中呢?这里的想法是,一个会话在技术上可以由多个人共享。如果一个人坐在浏览器前,使用它,登录,注销,等等。。。然后另一个人坐下来,开始在ColdFusion中使用它,所有这些都在同一个会话中。OnSessionStart在这种情况下只会发生一次,而不是两次。因此,如果用户结构不存在,则无论是否正在启动over-arching会话,都希望重新创建该用户结构。
<cfset structdelete(session, "user") />