如何在网站和虚拟应用程序之间维护 .aspxauth 会话 Cookie

本文关键字:维护 之间 aspxauth 会话 Cookie 应用程序 虚拟 网站 | 更新日期: 2023-09-27 18:33:36

我们在 .net 中拥有生产网站,以及作为虚拟应用程序从该网站运行的第三方 Web 应用程序。 我的任务是维护网站和第三方应用程序之间的会话超时。 即,只要用户在第三方应用程序上处于活动状态,会话就会保持活动状态,因此当他们返回网站时,即使在 20 分钟到期后,他们的会话仍然处于活动状态。 我们在网站和应用程序中都使用表单身份验证进行会话管理,从我所读到的内容来看,我应该能够通过 Web 配置中的设置来做到这一点。 我已经更新了两个网络配置文件的身份验证部分

基本上我正在与 www.mydomain.com 和 www.mydomain.com/app/合作

    <authentication mode="Forms">
        <forms
           name=".ASPXFORMSAUTH"
           loginUrl="home.aspx"
           enableCrossAppRedirects="true"
           slidingExpiration="true"
           path="/"
           domain=".infinedi.net">
        </forms>
    </authentication>
    <machineKey
          validationKey="BDEA0BE471E4E2C24E5A9552AF232C3E7BF584DBEEAA1262CEE78CB5126FBBBE9E8007DB5ED8357FEE5C2C5B6FF3FC7D34C7CEA54DE3790560FCDEBF44415804"
          decryptionKey="2E31C984223964655C203E3A91AF139B1AE0A964F1475E204E6AACE62840EAB0"
          validation="SHA1"
          decryption="AES"
          />

但这并没有起到作用。 与小提琴手一起观看时,我可以看到,一旦我进入第三方应用程序,我就会得到一个新的.我怀疑的ASPXFORMSAUTH会话是网站会话超时的原因。 通过 webconfig 做到这一点是可能的,还是我应该走不同的方向?

如何在网站和虚拟应用程序之间维护 .aspxauth 会话 Cookie

我认为您遇到的问题是因为 ASP.NET 为每个应用程序分配了一个新的会话ID。即使您具有相同的 Cookie 名称和加密参数,内部生成的会话 ID 也会有所不同。您可以通过手动检测现有会话并更新会话 ID 来解决此问题。这曾经是基于闪存的文件上传程序的常见解决方法,因为 Flash 没有发送适当的 cookie,因此服务器端的上传处理程序无法识别用户的现有会话。

http://snipplr.com/view/15180/

使用上述 URL 中的示例代码,Flash 应用程序将发布到查询字符串中包含会话 ID 的 URL,BeginRequest 处理程序将检测并更新 Request.Cookie 集合。我还没有对此进行测试,但您可以稍微修改代码以检测父应用程序中的现有 cookie。

作为替代方法,请参阅: 使用 ASP.NET 会话状态服务跨应用程序共享会话

无法让它工作,所以求助于 iframe。 丑陋的解决方案,我稍后将不得不重新审视。