c# - 如何维护网站和虚拟应用程序之间的 .aspxauth session cookie?

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

我们在 .net 中有我们的生产网站和作为网站虚拟应用程序运行的第三方网络应用程序。我的任务是维护网站和第三方应用程序之间的 session 超时。也就是说,只要用户在第三方应用程序上处于事件状态, session 就会保持事件状态,因此当他们返回网站时,即使是在 20 分钟到期之后,他们的 session 仍然处于事件状态。我们在网站和应用程序中都使用表单例份验证进行 session 管理,根据我的阅读,我应该能够通过网络配置中的设置来做到这一点。我已经用

更新了两个 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"
          />

但这并没有起到作用。当使用 fiddler 观看时,我可以看到,只要我进入第三方应用程序,我就会得到一个新的 .ASPXFORMSAUTH session ,我怀疑这就是网站 session 超时的原因。是否可以通过 webconfig 执行此操作,或者我应该走不同的方向?

最佳答案

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

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

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

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

关于c# - 如何维护网站和虚拟应用程序之间的 .aspxauth session cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10523474/

相关文章:

c# - 如何为给定类型创建实例?

c# - Jquery Easy UI + ASP.NET

c# - 我如何从一个集合转换为另一个集合

c# - Visual Studio - 使用 Razor 的 C# - 第一步

entity-framework - 如何将 ASP.NET Entity Framework ConnectionStrings 移至 web.config 的 appSettings 部分

asp.net - 如何强制 ASP.NET 表单例份验证使用 ReturnUrl 参数的绝对 URL?

c# - 当前上下文中不存在名称 'ViewBag' - Visual Studio 2015

ruby-on-rails - 保持 Web 应用程序配置的最佳方法是什么?

asp.net - 将表单例份验证与 Windows 身份验证混合使用

asp.net-mvc - Silverlight、SSL、HTTPS、WCF、MVC 和表单例份验证