【问题标题】:Shared logic for Multiple HttpPost method in Web API controllerWeb API 控制器中多个 HttpPost 方法的共享逻辑
【发布时间】:2021-12-25 16:11:23
【问题描述】:

我在 Web API 控制器中有多个 HttpPost 方法,我还需要检查所有这些方法的某些条件。我怎样才能在控制器中添加这个逻辑而不在每个方法中重复代码? 示例:

public class OnboardingController : ApiController
// can i check for conditions before the code enters to any of the httpPost?

[HttpPost]
[Route("api/Onboarding/Method1", Name = "Onboarding/Method1")]

// some code

[HttpPost]
[Route("api/Onboarding/Method2", Name = "Onboarding/Method2")]

// some code

【问题讨论】:

  • 您要检查什么样的do条件?每个条件是否特定于每个方法,或者您是否有一组条件应该应用于所有方法?如果条件不满足,你想做什么?
  • 将应用于所有人的条件集。在try and catch里面可能
  • 例如,如果用户没有权限,代码将不会进入任何 httpPost 路由
  • 这种事情应该通过授权系统来处理。

标签: c# asp.net-web-api


【解决方案1】:

这可以通过过滤器来实现。它们允许您在将控制权传递给控制器​​及其方法之前拦截请求并执行一些操作。例如,如果用户无权访问请求的端点,您可以记录请求参数或返回 403 Not Authorized。

内置过滤器很少,您也可以创建自己的过滤器。

阅读有关过滤器的更多信息:https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-6.0

本文展示了如何使用内置的授权过滤器:https://docs.microsoft.com/en-us/aspnet/core/security/authorization/simple?view=aspnetcore-6.0

【讨论】:

    猜你喜欢
    • 2012-07-09
    • 1970-01-01
    • 2023-03-12
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多