美好的一天,使用ColdFusion会议
我们正试图实现在ColdFusion中8的API,其中未使用的cookies - 相反,我们通过GET或POST为每个请求通过CFID,CFTOKEN和JSESSIONID。
我们正在使用mach-ii及其SessionFacade。我不知道你是否需要进一步的信息。请提及,如果你这样做。
在Coldfusion Administrator中,客户端变量设置为“Registry”,为“使用J2EE会话变量,启用应用程序变量,启用会话变量”中的每一个勾选了内存变量。
我的Application.cfc伪构造看起来像
<cfset this.name = "#cgi.server_name#" />
<cfset this.loginStorage = "session" />
<cfset this.sessionManagement = true />
<cfset this.setClientCookies = false />
<cfset this.setDomainCookies = false />
<cfset this.sessionTimeOut = CreateTimeSpan(0,1,0,0) />
<cfset this.applicationTimeOut = CreateTimeSpan(0,1,0,0) />
,并没有什么onSessionStart或onSessionEnd。
为了验证会话,我使用的插件,并在其预处理方法,我有:
if (not getSessionFacade().has("authUserLoggedIn")){
arguments.eventContext.clearEventQueue();
arguments.eventContext.announceEvent("nologin", newEventArgs);
}
我觉得我不理解的第一件事就是,是否有任何情况下它是必要的在使用J2EE会话时发送cfid和cftoken?或者jsessionid完全完全取代它们的功能?
其次,我希望这一个应用程序(而不是整个服务器)不发送cookie。在我的Application.cfc中,我将Cookie设置为禁用,但它仍尝试发送包含jsessionid的cookie。
这有什么,我认为是奇怪的副作用:
在Firefox禁用Cookie,然后将CFID,CFTOKEN和JSESSIONID进入URL正确维护会话状态。
但我们也将它用于接受cookie的iPhone应用程序。在我们通过将cookie保存到本地存储器来修复它之前,当您关闭应用程序并重新打开它时,cookie会丢失。不管事实上仍然有效的cfid,cftoken和jsessionid是在URL中发送的,它仍然给我们一个“未登录”的错误。
所以我有三个问题:
首先,使用J2EE会话时,在那里,我需要存储和重新发送CFID和CFTOKEN的情况?
其次,是否有应用程序级别设置我可以用来强制jsessionid手动存储,而不是使用cookie?
第三,在哪一个阶段是jsessionid拿起和会议变量从内存填充?这是不是我可以调试或询问,这样我就可以把事情说
if jsessionid refers to a current, valid session {
...
}
关于你最后的问题(第三),这是明确的“onSessionStart()”射击。当onSessionStart()触发它意味着事实上你有一个新的jsessionID;大概是空的。 – 2012-04-26 13:06:47
不完全是我的意思 - 我的意思是,在每个请求开始时,当jsessionid从url或cookie中选出时,系统检查它是否属于有效会话,并检索/填充会话数组为了该请求的目的。 – 2012-04-27 01:40:26