如何在网站和虚拟应用之间维护.aspxauth会话cookie?

时间:2012-05-09 20:16:44

标签: c# web-config forms-authentication .aspxauth

我们的生产网站位于.net,第三方网络应用程序作为虚拟应用程序从网站运行。我的任务是维护网站和第三方应用之间的会话时间。即,只要用户在第三方应用程序上处于活动状态,会话就会保持活动状态,因此即使在20分钟到期后他们返回网站,他们的会话仍然有效。我们在网站和应用程序中使用表单身份验证进行会话管理,从我读过的内容我应该能够通过Web配置中的设置来实现。我已使用

更新了两个webconfig文件的身份验证部分

基本上我正在与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做到这一点甚至是可能的,还是我应该采取不同的方向?

2 个答案:

答案 0 :(得分:0)

无法使用此功能,因此使用iframe。丑陋的解决方案,我将不得不重新审视。

答案 1 :(得分:0)

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

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

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

作为替代方案,请参阅:Sharing sessions across applications using the ASP.NET Session State Service