首页 > 解决方案 > 当有多个 Application.cfc 时,您将如何保持用户登录

问题描述

我继承了一个旧的 Coldfusion 应用程序。此应用程序有一个主站点和 7 个子站点。主站点和每个子站点都有自己的 Application.cfc。

非常像 Adob​​e 网站上的这个例子(右下角的图表是 Bandwith Associates):https ://helpx.adobe.com/coldfusion/developing-applications/developing-cfml-applications/designing-and-optimizing-a-冷融合应用程序/结构化应用程序.html

我已经构建了一个身份验证系统,它将通过会话变量在主级别登录用户。但是,当他们单击或重新定位到任何子站点时,所有会话变量都会消失。正如他们应该的那样,因为 Coldfusion 不会在用户所在的当前目录中找到任何其他 application.cfc 文件。

我希望我不必从每个子站点中删除 7 个 application.cfc 文件。因为这将涉及重写每个子站点。我只是希望他们能够保持登录状态(而不必登录多个子应用程序。

无需代码。我只需要一个可行的高级计划。最终,我将在一个子站点上实施它,看看它是否有效。如果是这样,那么我将在其余的子站点上实施它。

预期的结果应该是用户在他们的会话中保持登录状态,无论他们在此过程中访问了 7 个子站点中的哪个子站点。它们都具有相同的外观和感觉,因此对最终用户来说非常无缝。

附加背景:这个站点曾经有windows认证,现在我们将使用一个典型的应用程序登录过程。

标签: coldfusion

解决方案


可以通过对每个 Application.cfc 或 Application.cfm 使用相同的应用程序名称来共享会话范围。

应用程序.cfc

<cfset THIS.name = "my_app">

在所有 Application.cfc 文件的正文中。(不要把它放在函数里面!)

应用程序.cfm

使用<cfapplication>标签

<cfapplication name="my_app">

在所有 Application.cfm 文件中。确保在访问 SESSION 范围之前放置标签。

注意: my_app显然只是一个例子。您可以使用任何名称,但我建议您保留字母数字且长度小于 32 个字符。Adobe ColdFusion 在使用“外来”应用程序名称时有一些奇怪的错误。


推荐阅读