未调用 OnAuthorization

OnAuthorization isn't being called

我使用具有自定义授权的 WebApi 服务。这是 AuthorizationAttribute:(为了尽可能简单,我删除了所有逻辑并尝试发送 401):

public class Auth : AuthorizeAttribute
{
    private readonly List<Permissions> _requiredPermissions;

    public Auth(params Permissions[] permissions)
    {
      _requiredPermissions = permissions.ToList();
    }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
       base.HandleUnauthorizedRequest(filterContext); 
    }
}

在我的 Controller-Actions 中,我通过以下方式调用 Auth:

public class CustomerController : ApiController
{
   [Auth(Permissions.CanLogin, Permissions.IsAdmin)]
   public HttpResponseMessage Get(Guid id)
   {
        // Do something
    }
}

Permissions 只是一个简单的枚举。)

我可以看到 Auth() 中的构造函数在程序启动时被调用。但是“OnAuthorization()”方法永远不会被调用。

我错过了什么?

问题是我实现的授权来自MVC。但是对于网页api,需要另外授权,看起来差不多,但有点不同。

首先我必须删除自定义授权中对 MVC 的引用 class 并改用 web.http:

所以。我不得不删除这个:

using System.Web.Mvc

而是添加:

using System.Web.Http;

然后OnAuthorization-Method 需要另一个参数。 所以我不得不改变这个:

public override void OnAuthorization(AuthorizationContext filterContext)

对此:

public override void OnAuthorization(HttpActionContext filterContext)

(HttpActionContext 在 System.Web.Http.Controllers - 命名空间内)

在我安装了最新版本的 WebApi 后,似乎授权停止了工作,使用 "ASP.NET MVC 4 Web Application" 中的 nuget-console 并启用了 Web Api 选项。