如何在ColdFusion CFC的远程方法中使用/访问SESSION变量?

时间:2011-10-24 20:32:24

标签: javascript ajax coldfusion remote-access cfc

我在CFC中有几种方法可以通过JavaScript远程访问。其中一些方法使用SESSION变量来确定要运行的逻辑,从而确定要返回的数据。

例如,假设我在登录时设置了一个名为SESSION.IsMale的SESSION变量。

在我的远程CFC方法中,我运行以下代码:

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

    <cfreturn "pink" />
</cffunction>

现在,我不想直接访问我的CFC中的SESSION范围。那么,我怎样才能访问&#34;使用AJAX调用此方法时的SESSION范围。

我不想将页面中的值存储为全局JavaScript变量,因为这会使保护它们的目的失效。

2 个答案:

答案 0 :(得分: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 :(得分:1)

Jason的建议总是值得倾听,但如果ColdSpring看起来太多,你可能会考虑创建自己的简单远程代理:webroot下面的CFC专用于响应远程ajax调用。您可以在此处编写远程方法,然后使用其现有API并根据需要从会话范围传递/返回值,从而与模型/服务中的其他CFC(或者您组织它们)进行交互。

效果相同:保留封装并控制访问。