在同一个 IIS 网站上,我有两个名为/foo 和/bar 的 ASP.NET Web 应用程序。两者都使用表单例份验证,我希望用户能够独立登录和退出两个站点。
使用表单例份验证的标准配置,它似乎为表单例份验证 cookie 发送了“/”的 cookie 路径。这意味着当用户登录/bar 时,它会将他从/foo 中注销,这对我来说是不受欢迎的行为。
显而易见的解决方案似乎是这样的:
FormsAuthentication.RedirectFromLoginPage(username, false, Request.ApplicationPath);
这使得表单 auth cookie 具有允许用户独立登录/foo 和/bar 的应用程序路径:-) 但是还有一个更严重的问题:如果用户尝试登录/Foo(使用大写的 F ),IIS 将它们定向到 Web 应用程序/foo,但它们永远无法登录,因为浏览器(在本例中为 chrome)在根据 cookie 路径决定是否发送 cookie 时区分大小写。
这似乎是每个 ASP.NET Web 应用程序开发人员都会面临的常见问题,但我看不到合理的解决方案。请告诉我我错过了一些明显的东西?
谢谢
安迪
最佳答案
我假设你已经以某种方式解决了这个问题,但由于我偶然发现了这个问题,我想我应该加上我的几分钱。
要解决此问题,请在 web.config 中使用不同的 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>
关于asp.net - 如何设置表单例份验证 cookie 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10070801/