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



我在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作用域。那么,在使用AJAX调用此方法时,如何"访问"SESSION范围呢?

我不想将这些值作为全局JavaScript变量存储在页面中,因为这会破坏保持它们安全的目的。

我能提供的最好的答案是考虑使用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

Jason的建议总是值得一听,但是如果ColdSpring似乎太多了,您可以考虑创建自己的简单远程代理:在您的web浏览器下面创建一个CFC,专门用于响应远程ajax调用。您在这里编写远程方法,然后将与模型/服务中的其他cfc交互(或无论您如何组织它们),使用它们现有的api并根据需要从会话作用域传递/返回值。

效果是一样的:保留封装和访问控制。

最新更新