如何在 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 变量,因为这违背了保证它们安全的目的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我能提供的最佳答案是使用 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
The best answer I can offer is to look at using ColdSpring to create Remote Proxies and to create AOP interceptors to handle the validation.
It is a lot less complicated than it sounds.
I cover it in my Securing Ajax presentation here: http://www.12robots.com/index.cfm/2010/8/19/My-Presentations-slides-from-cfObjective-NCDevCon-and-CFUnited
And there is more on it in the ColdSpring documentation here: http://www.coldspringframework.org/index.cfm/go/documentation
Jason 的建议总是值得一听,但如果 ColdSpring 看起来太多了,您可能会考虑创建自己的简单远程代理:位于您的 webroot 下的一个 CFC,专门用于响应远程 ajax 调用。您可以在此处编写远程方法,这些方法随后将与模型/服务中的其他 CFC(或者您组织它们的方式)进行交互,使用它们现有的 API 并根据需要从会话范围传递/返回值。
效果是相同的:保留封装并控制访问。
Jason's advice is always worth listening to, but if ColdSpring seems too much, you might consider just creating your own simple remote proxy: a CFC below your webroot dedicated to responding to remote ajax calls. You write remote methods here which will then interact with other CFCs in your model/service (or however you organise them), using their existing APIs and passing/returning values from the session scope as necessary.
The effect is the same: encapsulation is preserved and access controlled.