【问题标题】:HttpContext.Current.User same on multiple MVC sites running locallyHttpContext.Current.User 在本地运行的多个 MVC 站点上相同
【发布时间】:2011-07-06 03:49:01
【问题描述】:

我在一家咨询公司工作,每天在多个站点上工作,其中大多数运行 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 有什么不同让这些网站获取彼此的身份验证信息?

【问题讨论】:

    标签: asp.net-mvc authentication


    【解决方案1】:

    所有站点的身份验证 cookie 的名称可能相同,如果它们都托管在同一个域上,则此 cookie 将随每个请求一起发送。默认情况下,cookie 名称为.ASPXAUTH。因此,如果您在站点 A 上通过身份验证,您将在站点 B 上自动进行身份验证。cookie 的名称在 web.configforms 部分中定义:

    <forms loginUrl="~/Account/LogOn" timeout="2880" name="someCookieName" />
    

    因此请尝试为您的网站指定不同的身份验证 cookie 名称。

    【讨论】:

    • 谢谢,达林!我们在看到您的帖子前大约 30 秒就知道了这一点。完全正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多