我在一家咨询公司工作,我们每天都在多个站点上工作,大多数都运行ASP.NET MVC 3.我们在开发过程中使用IIS Express在本地运行这些站点,所以我们看到类似“http:/ / localhost:1234“为每个站点。
我们正在所有这些网站上使用表单身份验证,当我们从一个站点切换到另一个站点时,我们看到了一些奇怪的东西。当我登录到站点A并开始浏览站点B时,调试站点B时的HttpContext.Current.User属性具有我们从站点A设置的值。
这似乎只发生在MVC网站上。当我在IIS Express下的同一台机器上运行WebForms站点时,HttpContext.Current.User等于GenericPrincipal对象。换句话说,就身份验证而言,所有Web窗体站点似乎都是孤立的。有什么不同的MVC让这些网站获取彼此的身份验证信息?
答案 0 :(得分:4)
所有网站的身份验证Cookie名称可能相同,如果它们都托管在同一个域中,则会在每个请求中发送此Cookie。默认情况下,Cookie名称为.ASPXAUTH
。因此,如果您在站点A上进行了身份验证,您将在站点B上自动进行身份验证。该Cookie的名称在forms
的{{1}}部分中定义:
web.config
因此,请尝试为您的网站指定不同的身份验证Cookie名称。