Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ColdFusion CFC的远程方法中使用/访问会话变量?_Javascript_Ajax_Coldfusion_Remote Access_Cfc - Fatal编程技术网

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

Javascript 如何在ColdFusion CFC的远程方法中使用/访问会话变量?,javascript,ajax,coldfusion,remote-access,cfc,Javascript,Ajax,Coldfusion,Remote Access,Cfc,我在CFCs中有几个方法可以通过JavaScript远程访问。其中一些方法使用会话变量来确定要运行的逻辑,从而确定要返回的数据 例如,假设我在登录时设置了一个名为SESSION.IsMale的会话变量 在我的远程CFC方法中,我运行以下代码: <cffunction name="getFavoriteColor" access="remote" returntype="String"> <cfif SESSION.IsMale> <cfret

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

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

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

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

    <cfreturn "pink" />
</cffunction>


现在,我不想直接访问CFC中的会话范围。那么,在使用AJAX调用此方法时,如何“访问”会话范围呢


我不想将这些值作为全局JavaScript变量存储在页面中,因为这样做无法保证它们的安全。

我能提供的最佳答案是使用ColdSpring创建远程代理,并创建AOP拦截器来处理验证

这比听起来要简单得多

我在这里的安全Ajax演示中介绍了这一点:


ColdSpring文档中有更多的内容:

< P>杰森的建议总是值得听的,但是如果ColdSpring看起来太多,你可以考虑创建自己的简单远程代理:一个低于你的WebOro的CFC,专门用来响应远程Ajax调用。您在此处编写远程方法,然后使用模型/服务中的其他CFC的现有API并根据需要传递/返回会话范围中的值,这些方法将与模型/服务中的其他CFC进行交互(或以您组织它们的方式进行交互)


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

我只想声明上面的例子是极其简化的伪代码。我的方法可能在不同的点访问多个会话变量。“我不想直接访问CFC中的会话范围”为什么?“问题在哪里?”亨利,因为它破坏了封装。我认为这与封装无关。我认为在这种情况下,接吻规则会凌驾于此。如果我关心可测试性,我可以简单地使用
cfargument
sess默认值
#Session
我不同意Henry的观点。破坏封装仍然是一件坏事,它会降低应用程序的可维护性。将会话范围设置为默认参数可能会解决这个问题(几乎没有),但您仍然有一个关注点分离的问题。您的组件不应该关心自身的安全,它应该关心自己是什么。这就是ColdSpring、远程代理和AOP能够真正帮助您的地方。您可以保护您的组件和方法,而无需在这些方法中添加任何安全代码。它分开了。