我们有一个MVC应用程序,它使用AJAX端点的控制器,以及FormsAuth进行身份验证。
我遇到了一个有趣的场景,其中GET请求的行为与POST请求的行为不同(均为未经授权的用户)。
在这种特殊情况下,我们的自定义ControllerFactory运行以下代码来尝试访问此控制器:
FormsAuthentication.SignOut();
requestContext.HttpContext.Response.Redirect(FormsAuthentication.LoginUrl);
throw new UnauthorizedAccessException();
(我意识到在AJAX请求中重定向是没有意义的,但请耐心等待。)
当我对此控制器执行GET请求(AJAX)时,客户端会收到401 - Unauthorized异常,我可以在客户端捕获该异常并将用户重定向到登录页面。
当我向这个控制器发出POST请求(AJAX)时,我得到一个302,我的请求被重定向到我的登录页面。
为什么GET和POST请求的行为不同?
答案 0 :(得分:1)
所以我接受了Darin的建议并做了一些重构,我不再遇到这个问题了。 :)我发现了我的问题的根源,即我们有一个没有IExceptionFilter属性的MVC错误处理属性,所以有些东西发生在非确定的订单中。感谢对接的有益踢。 ;)