1

特定のコントローラーへのアクセスを許可する前に、いくつかの追加のチェックに承認アクションフィルターをさまざまなコントローラーに適用しているMVC4ソリューションがあります。

 public class AuthoriseUserViewAccess : FilterAttribute , IAuthorizationFilter
{

    public void OnAuthorization(AuthorizationContext filterContext)
    {
    }
 }

これは私のコントローラーとアクションでうまく機能しています。

しかし、同じソリューションで使用しているWEBAPIコントローラーでも同じことをしたいと思いました。

AuthoriseUserViewAccess属性をapicontrollersに適用しようとしましたが、onAuthorisationメソッドが呼び出されないようです。

これがWebAPIコントローラーでも機能するか、またはWEBAPIで同じことを実現するための別のアプローチがありますか。

4

1 に答える 1

3

この aa テストを使用すると、OnAuthorization が呼び出されます。属性は私の webapi に適用されます。System.Web.Http.AuthorizeAttribute から継承してみてください。

    public class CustomAuthorize : System.Web.Http.AuthorizeAttribute
{
    public override void OnAuthorization(
           System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        // Do other checks
        var ok = false;
        if (!ok)
        {
            actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden);
            return;
        }

        base.OnAuthorization(actionContext);
    }
}
于 2012-12-06T12:48:25.590 に答える