Asp.net 如何设置窗体身份验证cookie路径

Asp.net 如何设置窗体身份验证cookie路径,asp.net,cookies,forms-authentication,Asp.net,Cookies,Forms Authentication,在同一个IIS网站上,我有两个名为/foo和/bar的ASP.NET web应用程序。两者都使用表单身份验证,我希望用户能够独立地登录和退出这两个站点 对于表单身份验证的标准配置,它似乎为表单身份验证cookie发送了一个“/”的cookie路径。这意味着当用户登录到/bar时,它会将其从/foo中注销,这对我来说是不受欢迎的行为 显而易见的解决办法似乎是: FormsAuthentication.RedirectFromLoginPage(username, false, Request.Ap

在同一个IIS网站上,我有两个名为/foo和/bar的ASP.NET web应用程序。两者都使用表单身份验证,我希望用户能够独立地登录和退出这两个站点

对于表单身份验证的标准配置,它似乎为表单身份验证cookie发送了一个“/”的cookie路径。这意味着当用户登录到/bar时,它会将其从/foo中注销,这对我来说是不受欢迎的行为

显而易见的解决办法似乎是:

FormsAuthentication.RedirectFromLoginPage(username, false, Request.ApplicationPath);
这使得forms auth cookie具有允许用户独立登录到/foo和/bar的应用程序路径:-)但是还有一个更严重的问题:如果用户尝试登录到/foo(大写F),IIS会将其指向web应用程序/foo,但他们永远无法登录,因为浏览器(本例中为chrome)根据cookie路径决定是否发送cookie时区分大小写

这似乎是每个ASP.NET web应用程序开发人员都会面临的常见问题,但我看不到一个合理的解决方案。请告诉我我错过了一些明显的事情

谢谢

安迪

在cookiename中,您可以设置cookie名称。
AddMinutes
中,您可以设置您的分钟值,当前为60。

我想您已经解决了这个问题,但由于我偶然发现了这个问题,我想我应该添加几美分

要解决此问题,请在web.config中使用不同的cookie名称。比如:

<authentication mode="Forms">
  <forms name=".ASPXFORMSAUTH_FOO"
      loginUrl="public/login.aspx" cookieless="UseCookies" slidingExpiration="true"/>
</authentication>



Update:我找到了这个。它明确指出默认的cookie路径是/出于区分大小写的原因,所以基本上是的,这是一个基本问题,不,没有一个简单的通用答案。哇,很明显,我因为之前没有想到它而责备自己。显然,我必须对会话cookie进行类似的操作。我意识到这不是我问题的直接解决方案,但因为我不能保证我的应用程序的所有访问都使用区分大小写的URL,所以没有直接的解决方案,这是最容易实现的。感谢用户1429080:-)我遇到了一个问题,我有一个虚拟目录(这是一个MVC应用程序),然后是一个嵌套的VD(也是一个MVC应用程序),登录到子应用程序会杀死父应用程序中的cookie。这对我来说非常优雅地解决了这个问题。非常感谢。尽管上述解决方案可以工作,但请注意,如果您最终使用两个应用程序进行身份验证,则上述解决方案将产生开销,即每个请求将携带两个cookie。正确设置cookie路径将是正确的解决方案。注意,您可以通过编程方式设置cookie名称。这里的例子
<authentication mode="Forms">
  <forms name=".ASPXFORMSAUTH_FOO"
      loginUrl="public/login.aspx" cookieless="UseCookies" slidingExpiration="true"/>
</authentication>
<authentication mode="Forms">
  <forms name=".ASPXFORMSAUTH_BAR"
      loginUrl="public/login.aspx" cookieless="UseCookies" slidingExpiration="true"/>
</authentication>