ColdFusion:何时定义会话变量?

dco*_*bus 2 coldfusion session session-variables coldfusion-9

当用户请求页面时,是否为该用户启动会话?据我所知,一旦你发出页面请求就开始会话......

如果是这种情况,您何时创建会话变量?即用户名,密码,偏好等...随时都可以?

Jer*_*ell 5

这里解释了配置和使用会话变量的基础知识.

会话基本上是客户端和应用程序之间的逻辑关系,因此会话变量可以从客户端对应用程序的第一个请求中获得,并且会话通常在使用唯一标识会话的cookie的请求之间保留,尽管这也可以完成通过在URL中传递标识符.值得注意您的会话超时设置,例如,您可能希望为未设置cookie的机器人/爬虫提供更短的超时,从而为每个页面请求启动新会话(有关此内容的更多详细信息).


Dan*_*rts 5

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

我喜欢做的是将用户特定的值放在用户结构中。所以在请求开始时,我会检查变量并设置它是否不存在。例如...

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

当用户登录时,您可以填写适当的值并设置 session.user.authorized = true

当用户注销时,这种方法的好处是您可以删除用户结构。

<cfset structdelete(session, "user") />
Run Code Online (Sandbox Code Playgroud)

然后在下一页上,将再次对用户结构进行检查,如果它不存在则创建。