3

我们正在从 ColdFusion 8 迁移到 10。我们的应用程序也具有用 .NET 编写的功能,但是会话仅在 ColdFusion 中维护。

ColdFusion 8 中用于 .NET 和 CF 集成的当前架构:

  1. 会话在用户登录应用程序时设置(在 CF 中)。(我们正在使用 J2EE 会话。)
  2. 当用户点击 .NET 链接,Jsessionid,CFIDCFTOKEN通过 url 传递到 .net 页面时。在 .net 代码中,执行以下步骤来检查会话:

    2a。jsessionid调用一个通用函数,该函数将在 url 中执行 ColdFusion 文件请求 (chkSession.cfm) 。

    2b。如果可用, chkSession.cfm 将返回session.UID,否则将返回 -1。如果in url 有效,Session.UID则将可用。jsessionid

    2c。如果返回有效的 UID,将加载 .NET 页面。如果返回-1,用户将被重定向到登录页面。

CF 10 中的问题:

在 CF 10 中,我们总是得到-1。我读到,作为 CF 10 中安全性增强的一部分,我们将无法通过在 url 中传递cfide,cftoken来重新创建 ColdFusion 会话。jsessionid

我想就什么是使我们的 .NET 功能在 ColdFusion 10 中工作的最佳方法获得您的建议。有没有更好的方法来检查来自 .NET 的 ColdFusion 会话?我能想到的一种选择是使用数据库。我期待一个可以快速实施且功能强大的解决方案。

4

1 回答 1

1

我认为可行的是更改您的 .Net 客户端代码以通过 JSessionID 作为其请求中的 cookie 值发送。这样,您应该再次使用的功能。

值得注意的是,在 URL 中公开 Session ID 可能会使您暴露于某些安全漏洞,因此您将来可能希望避免这种情况。

我也使用了您提到的数据库方法。如果您走这条路,请让 CF 代码使用 GUID 作为标识符和创建记录时的时间戳插入记录。在 .Net 方面,查找 GUID 并仅在时间戳来自小于 X 秒前的情况下接受请求,因此您不会创建会长时间验证您的令牌。X 需要是您认为客户端遵循从 CF 到 .Net 页面的重定向所需的最大时间,因此 2 可能很多。您将要删除已使用的令牌并有一个计划任务来删除“未使用”的令牌。

于 2013-03-27T12:32:14.630 回答