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



我有一个使用表单身份验证的面向公众的 MVC3 站点。 使用窗体身份验证,如果用户未获得授权,则会将重定向到登录页。 我不希望这种行为,而是希望服务器以未经授权的 401 响应。 有没有一种简单的方法可以做到这一点?

你的意思是这样吗?

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]

最新更新