2011-10-24 5 views
3

JavaScript経由でリモートからアクセスできるCFCにはいくつかのメソッドがあります。これらのメソッドの中には、実行するロジックを決定するためにSESSION変数を使用するものと、それによって返すデータを決定するものがあります。ColdFusion CFCのリモートメソッドでSESSION変数を使用/アクセスするにはどうすればよいですか?

たとえば、私がログイン時にSESSION.IsMaleと呼ばれるSESSION変数を設定したとします。私は、直接私のCFCのセッションスコープにアクセスする必要はありません、今

<cffunction name="getFavoriteColor" access="remote" returntype="String"> 
    <cfif SESSION.IsMale> 
     <cfreturn "blue" /> 
    </cfif> 

    <cfreturn "pink" /> 
</cffunction> 

:私のリモートCFCメソッドで

は、私は次のコードを実行します。したがって、AJAXを使用してこのメ​​ソッドを呼び出すときに、どのようにセッションスコープにアクセスすることができますか?

グローバルJavaScript変数としてページに値を格納したくないのは、その値を安全に保つという目的を破るためです。

+0

私は上記の例が非常に単純化された擬似コードであると述べたいと思います。私のメソッドがいくつかのSESSION変数に異なる点でアクセスする可能性があります。 –

+3

「私のCFCのSESSIONスコープに直接アクセスしたくない」のはなぜですか?質問はどこですか? – Henry

+1

@Henryカプセル化を破るためです。 –

答えて

3

私が提供できる最良の答えは、ColdSpringを使用してリモートプロキシを作成し、検証を処理するAOPインターセプタを作成することです。

それは聞こえるほど複雑ではありません。

私はここに私の確保Ajaxのプレゼンテーションでそれをカバー:http://www.12robots.com/index.cfm/2010/8/19/My-Presentations-slides-from-cfObjective-NCDevCon-and-CFUnited

そしてここColdSpringのドキュメントでそれについての詳細があります:http://www.coldspringframework.org/index.cfm/go/documentation

1

ジェイソンのアドバイスは常にを聞いて価値があるが、ColdSpringはあまり思われる場合あなた自身のシンプルなリモートプロキシを作成することを検討するかもしれません。遠隔のajax呼び出しに応答するWebrootの下にあるCFCです。ここではリモートメソッドを記述し、既存のAPIを使用し、必要に応じてセッションスコープから値を渡したり戻したりして、モデル/サービス内の他のCFCとやり取りします(またはそれらを整理します)。

効果は同じです。カプセル化は保持され、アクセス制御されます。

関連する問題