我有一个MVC 4解决方案,在允许访问某些控制器之前,我已经将授权操作过滤器应用到各种控制器上以进行一些额外的检查。
public class AuthoriseUserViewAccess : FilterAttribute , IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
}
}
这对我的控制器和操作一直很好。
但我也希望在同一解决方案中使用的WEB API控制器也是如此。
我尝试将AuthoriseUserViewAccess属性应用于我的apicontrollers,但onAuthorisation方法似乎永远不会被调用。
这是否也适用于WebAPI控制器,或者是否存在使用WEBAPI实现相同目的的另一种方法。
答案 0 :(得分:3)
我用这个测试,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);
}
}