1
断裂链我有2个动作过滤器:如何操作筛选
[Auth]
[Check]
public ActionResult Home()
{
//...
}
我需要设置CheckAttr的第一部作品,打破AuthAttr。
我不记得该怎么做。请帮帮我。
例如:
请求采取行动首页 - >第一部作品验证过滤器和逻辑我需要重定向到另一个动作
断裂链我有2个动作过滤器:如何操作筛选
[Auth]
[Check]
public ActionResult Home()
{
//...
}
我需要设置CheckAttr的第一部作品,打破AuthAttr。
我不记得该怎么做。请帮帮我。
例如:
请求采取行动首页 - >第一部作品验证过滤器和逻辑我需要重定向到另一个动作
你可以短路通过设置filterContext
的Result
财产整个执行:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Result = new JsonResult
{
Data = "hello",
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
在这个例子中,我已经回到一个JsonResult,但你可以回到你喜欢的任何的ActionResult:的ViewResult,PartialViewResult,RedirectToRouteResult,...
一旦分配了Result属性,将不会为此上下文执行更多过滤器。行动执行本身也将被短路。
还要记住,如果你的行动过滤器由同一类型派生没有保证的次序,除非你手动分配上他们每个人的Order
财产将被执行。当然,如果它们是不同类型的,例如IAuthorizationFilter
或IActionFilter
,很明显授权过滤器将在任何操作过滤器之前运行。这是设计。
另一方面,如果您只是试图阻止其他操作过滤器执行,但操作本身应该执行,恐怕没有办法实现这一点,您将不得不重新考虑这些过滤器的设计。
如何使用自定义消息将ActionExecutingContext设置为http 401错误? –