asp.net - 如何设置表单例份验证 cookie 路径

标签 asp.net cookies forms-authentication

在同一个 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/

相关文章:

php - 使用 php 登录系统重定向到存储在 mysql 服务器上的链接

asp.net - 表单例份验证适用于开发服务器,但不适用于生产服务器(相同的 SQL 数据库)

asp.net-mvc - 表单例份验证 + ASP.NET MVC 绝对 ReturnURL

asp.net - 当表单经过身份验证的用户未经身份验证时捕获的事件

javascript - 使用 window.onload 滚动到特定 div,而不添加网址

asp.net - Entity Framework 按枚举值字母顺序排序

c# - Azure 中的 ASP.NET Web 应用程序 - 如何记录错误?

java - 没有获取 PLAY_LANG 的正确值

jquery - Asp.net Jquery 数组搜索

google-chrome - 在 Windows 上解密 Chrome 的 cookie