两个站点之间错误地共享ASP.NET cookie

时间:2017-03-17 13:28:28

标签: asp.net cookies

我有两个在IIS Express中运行的ASP.NET网站localhost具有不同的端口。我正在使用FormsAuthentication来记住通过cookie登录。但是,当我登录或注销一个站点时,它会影响另一个站点,因此它们似乎共享相同的cookie。

这是一个常见问题,还是我可以调整一些东西来避免这种情况?

4 个答案:

答案 0 :(得分:3)

这很可能是由具有相同Cookie名称的网站引起的。

您可以在web.config文件中进行调整:

<authentication mode="Forms"> <forms name=".CookieName" loginUrl="LoginPage.aspx" /> </authentication>

来源: Can I change the FormsAuthentication cookie name?

答案 1 :(得分:2)

这两个网站是否属于同一个域名?您可能需要指定cookie路径。

https://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.formscookiepath(v=vs.110).aspx

请注意,更改cookie名称不会阻止cookie被发送到错误的应用程序。

答案 2 :(得分:1)

将cookie分配给主机名是一个常见问题。您应该为您的网站提供不同的AUTH cookie名称。看看如何做到这一点:Can I change the FormsAuthentication cookie name?

答案 3 :(得分:0)

http cookie不会与给定端口隔离。 Are HTTP cookies port specific?

浏览器将根据域发送cookie,而不考虑端口。

  

由于历史原因,Cookie包含许多安全性和   隐私不通。例如,服务器可以指示给定的   cookie用于&#34;安全&#34;连接,但安全属性   在活动网络存在的情况下不提供完整性   攻击者。同样,给定主机的cookie在所有主机上共享   该主机上的端口,即使是通常的&#34;同源策略&#34;   Web浏览器使用它隔离通过不同端口检索的内容。

如果要将该Cookie限制为同一域中的应用,则需要将cookie设置为特定于虚拟目录。有点像cookie.domain =&#39; yourdomain / appRootUrl /&#39;。