【发布时间】:2011-05-15 05:04:32
【问题描述】:
当用户请求页面时,是否为该用户启动会话?据我所知,一旦您发出页面请求,会话就会开始......
如果是这种情况,您何时创建会话变量?即用户名、密码、偏好等...随时?
【问题讨论】:
标签: session coldfusion session-variables coldfusion-9
当用户请求页面时,是否为该用户启动会话?据我所知,一旦您发出页面请求,会话就会开始......
如果是这种情况,您何时创建会话变量?即用户名、密码、偏好等...随时?
【问题讨论】:
标签: session coldfusion session-variables coldfusion-9
是的,用户的会话范围是在第一次请求时设置的。但是,这取决于您何时想要设置各种标志和值。不过,您可能不想将密码放在会话范围内。
我喜欢做的是将用户特定的值放入用户结构中。因此,在请求开始时,我会检查变量并设置它是否不存在。比如……
<cfif not structkeyexists(session, "user")>
<cfset session.user = {
authorized = false
, admin = false
, username = ''
, accountid = ''
<!--- etc --->
} />
</cfif>
当用户登录时,您可以填写适当的值并设置 session.user.authorized = true
当用户注销时,这种方法的好处是您可以删除用户结构。
<cfset structdelete(session, "user") />
然后在下一页将再次检查用户结构,如果它不存在则创建。
【讨论】:
配置和使用会话变量的基础是explained here。
会话基本上是客户端和应用程序之间的逻辑关系,因此会话变量可从客户端向您的应用程序发出的第一个请求中获得,并且会话通常使用唯一标识会话的 cookie 跨请求保持,尽管这可以也可以通过在 url 中传递标识符来完成。请注意您的会话超时设置,例如,您可能希望为未设置 cookie 的机器人/爬虫提供更短的超时时间,因此将为每个页面请求启动一个新会话 (more details on this)。
【讨论】: