我正朝着正确的方向寻找一点......
我们有一个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)并执行以下操作:
为了增加我的困惑,如果我再次启动登录页面(相同的浏览器,会话未关闭),并再试一次,它就可以了。有人知道吗?
答案 0 :(得分:0)
我敢打赌,您的OnActionExecuting
过滤器会妨碍您的登录表单,并且当您覆盖结果时会话cookie会丢失。如果此代码位于某个属性中,我会尝试从Login
操作中删除该属性,看看是否有效。