gpt4 book ai didi

asp.net-core - 在 ASP.NET vNext 过滤器中获取注入(inject)对象

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

我正在尝试创建我的自定义授权属性,但是在使用默认依赖注入(inject)框架的 asp.net vnext 中,我不知道如何获取注入(inject)的对象。我需要在默认 ctor 中获取注入(inject)的对象。

   public  class CustomAttribute
{

private IDb _db;

public CustomAttribute()
{
_db = null; // get injected object
}

public CustomAttribute(IDb db)
{
_db = db;
}

// apply all authentication logic
}

最佳答案

您可以使用 ServiceFilterAttribute以此目的。服务过滤器属性让 DI 系统负责实例化和维护过滤器的生命周期 CustomAuthorizeFilter及其任何所需的服务。

例子:

// register with DI
services.AddScoped<ApplicationDbContext>();
services.AddTransient<CustomAuthorizeFilter>();

//------------------

public class CustomAuthorizeFilter : IAsyncAuthorizationFilter
{
private readonly ApplicationDbContext _db;

public CustomAuthorizeFilter(ApplicationDbContext db)
{
_db = db;
}

public Task OnAuthorizationAsync(AuthorizationContext context)
{
//do something here
}
}

//------------------

[ServiceFilter(typeof(CustomAuthorizeFilter))]
public class AdminController : Controller
{
// do something here
}

关于asp.net-core - 在 ASP.NET vNext 过滤器中获取注入(inject)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26940288/

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