MVC3中的表单身份验证:如果用户尝试访问他们未授权的资源,则返回401(未授权)而不是重定向

时间:2012-06-07 18:09:40

标签: asp.net .net asp.net-mvc asp.net-mvc-3 forms-authentication

我使用表单身份验证面向公众面对MVC3网站。使用表单身份验证,如果用户未经授权,则会将重定向发送到登录页面。我不希望这种行为,而是希望服务器以未经授权的方式响应401。有没有一种简单的方法来实现这一目标?

1 个答案:

答案 0 :(得分:3)

你的意思是这样吗?

public class 401AuthorizeAttribute : AuthorizeAttribute
{
    private class Http401Result : ActionResult
    {
        public override void ExecuteResult(ControllerContext context)
        {
            // Set the response code to 401.
            context.HttpContext.Response.StatusCode = 401;
            context.HttpContext.Response.End();
        }
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        filterContext.Result = new Http401Result();
    }
}

您必须使用此属性而不是[Authorize]