我有一个 MVC 5.1 站点,其中的控制器具有单个 POST 操作。我有一个 Android 应用程序,我想使用基本身份验证发布到它。我创建了一个BasicAuthorizeAttribute
类并将其应用到我的控制器,并出于测试目的使其拒绝所有内容:
public class BasicAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.HttpContext.Response.SuppressFormsAuthenticationRedirect = true;
base.HandleUnauthorizedRequest(filterContext);
}
}
我可以在调试器中单步执行 HandleUnauthorizedRequest,但 Fiddler 显示 POST 响应是到登录页面的 302 重定向。我想SuppressFormsAuthenticationRedirect
本来应该防止这种情况发生的。这是一个问题,因为 Android 应用程序遵循重定向并从登录请求中获取 200 OK,因此看起来 POST 成功。我究竟做错了什么?
200 OK 状态代码在调用的上游设置HandleUnauthorizedRequest
。明确清除、设置和结束响应工作。SuppressFormsAuthenticationRedirect
在这种情况下似乎没有必要。
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
filterContext.HttpContext.Response.End();
base.HandleUnauthorizedRequest(filterContext);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)