美好的一天,使用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