3

当我的web.config具有以下httpRuntime时,我的控制器无法获取Cookie .ASPXAUTH。它似乎能够抓住任何其他的cookie,有或没有周期前缀。如果我删除下面的行,它工作正常。为什么httpRuntime targetFramework =“4.5”禁用抓取.ASPXAUTH cookie?

<httpRuntime targetFramework="4.5"/> 

我正在使用以下内容来获取cookie。

HttpCookie authCookie = Request.Cookies[".ASPXAUTH"]; 

为什么我不能抓取Forms Authentication cookie?

+0

你在web.config中有'标签吗?如果targetFramework =“4.5”,您是否在客户端浏览器中看到名为.ASPXAUTH的cookie? – Win

+0

我在web.config中有身份验证模式=“窗体”>。这是一个REST服务,所以我没有在浏览器中尝试过任何东西。我知道如果我使用curl发送带有cookie的请求,控制器无法获取该cookie。 – Nikhil

回答

2

我有类似的问题 - 我的应用程序与运行时4.5无法读取另一个/登录/应用程序运行在4.0下,创建一个.ASPXAUTH cookie,导致重定向循环。原来4.5引入了一些加密的改进,可以通过设置在web.config中以下启用:

原因:

<machineKey compatibilityMode="Framework45" /> 

or 

<httpRuntime targetFramework="4.5" /> 

https://blogs.msdn.microsoft.com/webdev/2012/10/23/cryptographic-improvements-in-asp-net-4-5-pt-2/1

解决方案:在我的情况下(许多其他4.0应用程序依赖于Cookie)解决方案是将我的新应用程序切换为使用:

<machineKey compatibilityMode="Framework20SP1" validationKey="..shared with login app, along with decryptionKey etc..."> 

or 

remove the <httpRuntime /> element 

当然,这只是一个解决方法,我会尽快将所有应用程序更新为更安全的4.5身份验证。