良い一日、
私たちはColdfusion8にAPIを実装しようとしています。これにより、Cookieは使用されません。代わりに、リクエストごとにGETまたはPOSTによってcfid、cftoken、およびjsessionidを渡します。
mach-iiとそのSessionFacadeを使用しています。これについてさらに情報が必要かどうかはわかりません。もしそうなら、言及してください。
Coldfusion Administratorでは、クライアント変数が「レジストリ」に設定され、「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には何もありません。
セッションを検証するために、プラグインを使用しており、そのpreProcessメソッドには次のものがあります。
if (not getSessionFacade().has("authUserLoggedIn")){
arguments.eventContext.clearEventQueue();
arguments.eventContext.announceEvent("nologin", newEventArgs);
}
私が最初に理解していないのは、J2EEセッションを使用するときにcfidとcftokenを送信する必要がある状況はあるかということだと思います。または、jsessionidは完全に完全にそれらの機能を置き換えますか?
次に、この1つのアプリケーション(サーバー全体ではなく)がCookieを送信しないようにします。Application.cfcで、Cookieを無効に設定していますが、それでもjsessionidを含むCookieを送信しようとします。
これは私が奇妙な副作用だと思うものを持っています:
Cookieが無効になっているFirefoxでは、URLに入力されたcfid、cftoken、およびjsessionidがセッション状態を正しく維持します。
ただし、Cookieを受け入れるiPhoneアプリでも使用しました。Cookieをローカルストレージに保存して修正する前に、アプリを閉じて再度開くと、Cookieが失われました。まだ有効なcfid、cftoken、およびjsessionidがURLで送信されていたにもかかわらず、「ログインしていません」というエラーが発生しました。
だから私は3つの質問があります:
まず、J2EEセッションを使用する場合、cfidとcftokenを保存して再送信する必要がある状況はありますか?
次に、Cookieを使用せずにjsessionidを手動で保存するために使用できるアプリケーションレベルの設定はありますか?
第三に、どの段階でjsessionidが取得され、セッション変数がメモリから入力されますか?これは私がデバッグまたは問い合わせることができるものですか、それで私は何かを言うことができます
if jsessionid refers to a current, valid session {
...
}