【问题标题】:How to pass dynamic parameter and inject repository in ActionFilter in asp.net Core 2.2? [duplicate]如何在 asp.net Core 2.2 中的 ActionFilter 中传递动态参数和注入存储库? [复制]
【发布时间】:2019-07-30 08:20:49
【问题描述】:

在 asp.net Core 2.2 中创建的以下 web api。我已经在其中实现了 ActionFilter。我想在我的操作过滤器中注入存储库以获取详细信息。

  1. API
// Action Filter
[CheckPermissionFilter("authorization.modules.add")] 
public async Task<IActionResult> Post([FromBody]Module module)
{
    // API Code
}
  1. 动作过滤器类
public class CheckPermissionFilter : ActionFilterAttribute 
{
   private readonly string _permission;
   PermissionRepository repository;

   public CheckPermissionFilter(string permission)
   {
       _permission = permission;
   }

   public async override void OnActionExecuting(ActionExecutingContext context)
   {
       string userID = "12345678990";

       if (!await repository.check("","",_permission))
       {
           return;   
       } 
   }
}

我想将存储库注入到操作过滤器。[CheckPermissionFilter("authorization.modules.add")] 中传递的参数是动态的,即在另一个 api 中它可能是 [CheckPermissionFilter("authorization.modules.update")]

【问题讨论】:

    标签: c# asp.net-core dependency-injection asp.net-core-webapi


    【解决方案1】:

    你可以使用

    var repo = context.HttpContext.RequestServices.GetService<IRepository>();
    

    在 OnActionExecuting() 方法中

    【讨论】:

      猜你喜欢
      • 2018-09-03
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      相关资源
      最近更新 更多