ASP.NET CORE: So injizieren Sie den Scoped -Service in benutzerdefinierter Autorisierungshandler korrekt einC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 ASP.NET CORE: So injizieren Sie den Scoped -Service in benutzerdefinierter Autorisierungshandler korrekt ein

Post by Anonymous »

Bearbeiten: Ich implementiere einen AutorizeFilter und habe das gleiche Problem erhalten. GetPolicyasync wird ausgeführt, es erstellt eine neue aktuelle Anfrage , anstatt die aktuelle wiederzuverwenden.

Code: Select all

public class PermissionAuthorizationPolicyProvider : DefaultAuthorizationPolicyProvider
{
public PermissionAuthorizationPolicyProvider(IOptions options)
: base(options) { }

/// 
public override async Task GetPolicyAsync(string policyName)
{
// ...
return new AuthorizationPolicyBuilder().AddRequirements(requirement).Build();
}
}
I Inject 2 -Dienste (man ruft in die Datenbank an, man liefert aktuelle Mieterdaten) in die AutorizationHandler , um die autorisierende Logik durchzuführen. Mein Handler wird also als Scoped registriert. < /P>

Code: Select all

public class PermissionHandler : AuthorizationHandler
{
private readonly ICurrentTenantService _currentTenantService;
private readonly ISecurityService _securityService;

public PermissionHandler(ICurrentTenantService currentTenantService, ISecurityService securityService)
{
_currentTenantService = currentTenantService;
_securityService = securityService;
}

protected override async Task HandleRequirementAsync(
AuthorizationHandlerContext context, PermissionRequirement requirement)
{
// Authorizing.....
}
}
< /code>
und sie sind so registriert: < /p>
builder.Services.AddScoped(); // contain connStr
builder.Services.AddDbContext();
builder.Services.AddDbContext();

// Register custom Authorization handler
builder.Services.AddScoped();

// Overrides the DefaultAuthorizationPolicyProvider
builder.Services.AddSingleton();

// Middlewares
app.UseMiddleware();
app.UseAuthorize();
Ich habe versucht, Schritt für Schritt zu debuggen, um zu finden, was der CurrentantService wieder initialisieren kann.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post