我有一个在类级别使用 [Authorize] 属性的 MVC Web Api 控制器。这使得所有 api 方法都需要授权,但我想创建一个名为 [ApiPublic] 的属性来覆盖 [Authorize] 属性。对于普通的 MVC 控制器,这里描述了一种类似的技术。
我尝试创建一个基于 System.Web.Http.AuthorizeAttribute 的 AuthorizeAttribute,但是如果我将它放在类级别具有 [Authorize] 的 api 方法上,则不会调用任何被覆盖的事件。任何人都知道如何覆盖 Web api 的授权?
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class ApiPublicAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
{
base.HandleUnauthorizedRequest(actionContext);
}
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
base.OnAuthorization(actionContext);
}
protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
{
return true;
}
}