gpt4 book ai didi

c# - 如何打破 Action 链过滤器

转载 作者:行者123 更新时间:2023-12-04 05:13:15 24 4
gpt4 key购买 nike

我有 2 个 Action 过滤器:

[Auth]
[Check]
public ActionResult Home()
{
//...
}

我需要首先设置 CheckAttr 并中断 AuthAttr。

我不记得怎么做。请帮帮我。

例子:

请求操作主页 -> 第一个工作身份验证过滤器和逻辑我需要重定向到另一个操作

最佳答案

您可以通过设置 Result 来缩短整个执行过程。 filterContext 的属性(property):

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Result = new JsonResult
{
Data = "hello",
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}

在这个例子中,我返回了一个 JsonResult,但你可以返回任何你喜欢的 ActionResult:ViewResult、PartialViewResult、RedirectToRouteResult、...

分配 Result 属性后,将不再为此上下文执行过滤器。 Action 执行本身也会短路。

另请记住,如果您的操作过滤器源自相同类型,则无法保证它们的执行顺序,除非您手动分配 Order他们每个人的属性(property)。当然,如果它们是不同类型的,例如 IAuthorizationFilterIActionFilter ,很明显授权过滤器将在任何操作过滤器之前运行。那是设计使然。

另一方面,如果您只是试图阻止其他 Action 过滤器执行而 Action 本身应该执行,恐怕没有办法实现这一点,您将不得不重新考虑这些过滤器的设计。

关于c# - 如何打破 Action 链过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com