我想创建一个Web API过滤器,以检查请求 header 是否具有正确的Api key 。

如果没有,我想返回403响应代码并暂停执行(禁止的操作)

public class ApiPermission : ActionFilterAttribute
{
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {

        }
}

使用filterContext我知道我可以做类似的事情:
filterContext.Result = new RedirectTo...

但是,如何将状态代码更改为403,仅返回一个字符串并停止执行并停止处理其他过滤器和 Controller 操作?

最佳答案

如果您不想引发异常,则可以返回HttpStatusCodeResult

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (filterContext.Result != null) return;   //Another filter has already returned a result so pass it on

    //Do your filtering

    filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.Forbidden, "Forbidden");
}

关于c# - 如何创建一个返回禁止结果的过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25900405/

10-12 13:11