我有一个继承的类ActionFilterAttribute
。
它解密由调用方加密的请求中的一些查询字符串属性。这样可以确保我的WebAPI方法仅接收“良好”参数。那很好。
如果参数未加密,我需要做的但没有成功的是否定/失败上下文(请求)。
如何强制请求终止?我在做我的逻辑:
public override void OnActionExecuting(ActionExecutingContext context)
已经尝试将响应设置为401,但这不起作用:
//Negate the access by default
context.HttpContext.Response.StatusCode = 401;
正如Clint B所说,方法之一是使用中间件。这是有关中间件的ASP核心文档,以及使用方法示例
另一方面,如果您使用MVC并希望使用ActionFilter强制MVC Action停止,则可以通过将Action Context.Result
属性设置为非null值来执行此操作。
例子:
actionContext.HttpContext.Response.StatusCode = 401;
actionContext.HttpContext.Response.Headers.Clear();
actionContext.Result = new EmptyResult();
//var wrongResult = new { error = "Wrong parameters"};
//actionContext.Result = new JsonResult(wrongResult);
如何在中间件和动作过滤器之间进行选择?动作过滤器只能用作MVC HTTP请求的方法过滤器,控制器过滤器或全局过滤器。
中间件是“坐在” HTTP管道上并检查所有请求和响应的组件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句