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

发布于 2024-12-11 19:38:50 字数 548 浏览 0 评论 0 原文

我在 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 变量,因为这违背了保证它们安全的目的。

I have several methods in CFCs that are accessed remotely via JavaScript. Some of these methods use SESSION variables to determine what logic to run, and thereby, what data to return.

For instance, let's say I set a SESSION variable upon login called SESSION.IsMale.

In my remote CFC method, I run the following code:

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

    <cfreturn "pink" />
</cffunction>

Now, I don't want to directly access the SESSION scope in my CFC. So, how can I "access" the SESSION scope when calling this method using AJAX.

I don't want to store the values in the page as Global JavaScript variables, since that defeats the purpose of keeping them secure.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

亚希 2024-12-18 19:38:50

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

遇见了你 2024-12-18 19:38:50

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文