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

时间:2013-02-28 09:58:38

标签: asp.net-mvc session-cookies

我正朝着正确的方向寻找一点......

我们有一个MVC站点,其中包含各种指向相同代码的虚拟目录,例如

https://www.x.com/dir1
https://www.x.com/dir2

由于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)并执行以下操作:

  1. 使用' dir1'登录网站网址。
  2. 我的身份验证正常 - 我可以看到包含我们的身份验证cookie的set-cookie http标头。此回复还会将我重定向到' dir2'。
  3. 在后续页面上,当我查看cookie时,auth cookie不存在 - 这就是问题所在。
  4. 为了增加我的困惑,如果我再次启动登录页面(相同的浏览器,会话未关闭),并再试一次,它就可以了。有人知道吗?

1 个答案:

答案 0 :(得分:0)

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