asp.net – 在同一个域上的两个网站之间共享cookie

前端之家收集整理的这篇文章主要介绍了asp.net – 在同一个域上的两个网站之间共享cookie前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是情况:

>网站A,ASP.NET MVC 4 web应用程序。域名:http://a.example.com
>网站B,ASP.NET MVC 4 web应用程序。域名:http://b.example.com

我正在尝试在网站之间共享cookie(表单身份验证)。

我没有使用表单身份验证。我正在使用内置的方法(加密,解密等),但是我正在设置自己的自定义cookie。

当我在其中一个网站上设置cookie时,其他网站会看到cookie,但无法解密cookie。错误是通用的“加密操作期间发生错误”。

我确保了

>该cookie的域名设置为“example.com”(这意味着子域可以访问。证明是另一个网站可以“看到”cookie)。
>两个网站共享相同的机器密钥。两者的web.config对于decryptKey和validationKey具有相同的值。
>两个网站的表单认证券版本和cookie名称相同。
>路径设置为“/”。

我以前做过这个,它的工作正常,但在这种情况下,两个应用程序共享相同的代码库。

在这种情况下,它们是单独的应用程序。这是因为我原型化了一个解决方案,其中同一顶级域上的两个独立于平台的应用程序可以共享认证cookie。

任何人都可以告诉我我缺少什么,或者提供一个替代解决方案。

我已经阅读了所有相关问题,但答案通常是2)。

解决方法

当您创建一个新的ASP.NET 4.5(例如ASP.NET MVC 4)应用程序时,以下行将添加到web.config中:
<httpRuntime targetFramework="4.5" />

这在我的其他应用程序中不存在,可能是因为我的其他应用程序是升级到4.5的ASP.NET 3.5应用程序。

删除新的ASP.NET Web应用程序中的行修复了问题。

我认为这是由于兼容模式值:
http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx

Framework45. Cryptographic enhancements for ASP.NET 4.5 are in effect. This is the default value if the application Web.config file has the targetFramework attribute of the httpRuntime element set to “4.5”.

不知道我如何解决这个问题。我认为应用程序具有不同的兼容性模式,因为它没有该httpRuntime元素。

猜你在找的asp.Net相关文章