我正在寻找正确方向的一点...
我们有一个 MVC 站点,有各种虚拟目录,它们都指向相同的代码,例如
https://www.x.com/dir1
https://www.x.com/dir2
由于 URL 的“内容”,不同的虚拟目录部分用于商业原因,部分用于控制站点的外观。
这些站点被锁定以使用表单身份验证进行访问,我正试图找出一个稍微难以捉摸的问题。
用户使用 url 'dir1' 登录站点,验证良好,调用 SetAuthCookie。
我们的代码在整个站点的 OnActionExecuting 上运行 - 它获取登录用户并确定他们应该访问的虚拟目录(每个用户一个),如果它们位于错误的 URL 中,将重定向它们,例如(简化代码):
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Authenticated && UserIsNotInCorrectDirectory())
{
filterContext.Result = new RedirectResult("https://www.x.com/dir2");
}
}
我遇到的问题是 - 如果我启动一个新的浏览器(此时使用 firefox 来查看 cookie)并执行以下操作:
- 使用 'dir1' url 登录网站。
- 我通过了身份验证——我可以看到包含我们的身份验证 cookie 的 set-cookie http 标头。此响应还将我重定向到“dir2”。
- 在随后的页面上,当我查看 cookie 时,auth cookie 不存在 - 这就是问题所在。
为了增加我的困惑,如果我再次打开登录页面(相同的浏览器,会话未关闭),然后再试一次,它就可以了。有人有线索吗?