我在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变量,因为这会使保护它们的目的失效。
答案 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(或者您组织它们)进行交互。
效果相同:保留封装并控制访问。