在同一个IIS网站上,我有两个名为/ foo和/ bar的ASP.NET Web应用程序.两者都使用表单身份验证,我希望用户能够独立登录和退出两个站点.
使用表单身份验证的标准配置,它似乎为表单身份验证cookie发送"/"的cookie路径.这意味着当用户登录/ bar时,它会将他从/ foo中导出,这对我来说是不合需要的行为.
显而易见的解决方案似乎是这样的:
FormsAuthentication.RedirectFromLoginPage(username, false, Request.ApplicationPath);
Run Code Online (Sandbox Code Playgroud)
这使得表单auth cookie具有允许用户独立登录/ foo和/ bar的应用程序路径:-)然而,还有一个更令人讨厌的问题:如果用户尝试登录/ Foo(使用大写字母F) ),IIS将它们定向到Web应用程序/ foo,但它们永远无法登录,因为浏览器(在这种情况下为chrome)在决定是否根据cookie路径发送cookie时区分大小写.
这似乎是每个ASP.NET Web应用程序开发人员都会面临的常见问题,但我看不到合理的解决方案.请告诉我,我错过了一些明显的东西?
谢谢
安迪
我们希望FormsCookiePath的FormsCookieName更改我们的应用程序的每个实例.我们有一个应用程序,它在1个服务器/域名上有多个实例.因此,我们只能同时在一个应用程序中工作,因为cookie会相互覆盖.对于Sessions顺便说一句.
有没有办法动态地,例如在Global.asax Application_Start中,更改此名称?这将是有用的,因为我们在每个应用程序中保留许可证名称,可以用作CookieName的基础.
我们已经使用Web.config和额外文件来覆盖外部文件中的Web.config值,使用: <appSettings file="Web.AppSettings.Config">
但这需要手动操作,这些操作可能会被遗忘并且是多余的,因为可以从数据库中检索设置.
谢谢.