Asp.net mvc ASP.net MVC-身份验证cookie和重定向

Asp.net mvc ASP.net MVC-身份验证cookie和重定向,asp.net-mvc,session-cookies,Asp.net Mvc,Session Cookies,我在寻找一点正确的方向 我们有一个MVC站点,有各种虚拟目录,它们都指向同一代码,例如 https://www.x.com/dir1 https://www.x.com/dir2 不同的虚拟目录部分用于URL“内容”引起的业务原因,部分用于控制网站的外观 这些网站通过表单身份验证被锁定以供访问,我正试图追踪一个稍微难以捉摸的问题 用户使用url“dir1”登录到站点,身份验证良好,调用SetAuthCookie 我们有在OnAction上运行的代码在整个站点上执行-它接收登录的用户并确定他们应

我在寻找一点正确的方向

我们有一个MVC站点,有各种虚拟目录,它们都指向同一代码,例如

https://www.x.com/dir1
https://www.x.com/dir2
不同的虚拟目录部分用于URL“内容”引起的业务原因,部分用于控制网站的外观

这些网站通过表单身份验证被锁定以供访问,我正试图追踪一个稍微难以捉摸的问题

用户使用url“dir1”登录到站点,身份验证良好,调用SetAuthCookie

我们有在OnAction上运行的代码在整个站点上执行-它接收登录的用户并确定他们应该访问哪个虚拟目录(每个用户一个),如果他们在错误的URL中,将重定向他们,例如(简化代码):

我遇到的问题是,如果我启动一个新的浏览器(立即使用firefox查看cookies)并执行以下操作:

  • 使用“dir1”url登录站点
  • 我得到了很好的身份验证-我可以看到包含我们的身份验证cookie的set-cookie http头。此响应也会将我重定向到“dir2”
  • 在随后的页面上,当我查看cookies时,auth cookie不在那里-这就是问题所在

  • 更让我困惑的是,如果我再次打开登录页面(同一浏览器,会话未关闭),然后再试一次,它就会工作。有人有线索吗?

    我敢打赌,你的
    OnActionExecuting
    过滤器正在妨碍你的登录表单,而当你覆盖结果时,你的会话cookie正在丢失。如果此代码存在于某个属性中,我会尝试从您的
    登录操作中删除该属性,看看是否有效。

    这也是我的赌注,但我正在寻找发生此情况的详细原因,以便缓解此问题。这个重定向必须发生,我理解。我不是建议你完全取消重定向;我只是想从您的登录操作中删除它。不仅是为了解决手头的问题,还因为这有点道理;毕竟,如果用户尚未登录,您如何知道他是否在正确的目录中?抱歉,澄清一下,此重定向发生在发送到登录控制器之后,即我们知道他们已通过身份验证之后。
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (Authenticated && UserIsNotInCorrectDirectory())
        {
            filterContext.Result = new RedirectResult("https://www.x.com/dir2");
        }
    }