Få Støpt objekt i ASP.NET vNext filter

stemmer
6

Jeg prøver å lage min egendefinert autorisere attributt, men i asp.net vnext bruker standard avhengighet injeksjon rammeverket jeg ikke hvordan du får injisert objekt. Jeg trenger å få injisert objekt i standard ctor.

   public  class CustomAttribute
{

   private IDb _db;

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

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

   // apply all authentication logic
}
Publisert på 14/11/2014 klokken 23:04
kilden bruker
På andre språk...                            


1 svar

stemmer
9

Du kan bruke ServiceFilterAttribute til dette formålet. Tjenesten filter attributt lar DI systemet tar vare på forekomster og opprettholde levetiden på filteret CustomAuthorizeFilterog dets eventuelle nødvendige tjenester.

Eksempel:

// 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
}
Svarte 15/11/2014 kl. 01:52
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more