by Anonymous » 02 Apr 2025, 06:15
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.>
Bearbeiten: Ich implementiere einen AutorizeFilter und habe das gleiche [url=viewtopic.php?t=19220]Problem[/url] erhalten. GetPolicyasync wird ausgeführt, es erstellt eine neue aktuelle Anfrage , anstatt die aktuelle wiederzuverwenden.[code]public class PermissionAuthorizationPolicyProvider : DefaultAuthorizationPolicyProvider
{
public PermissionAuthorizationPolicyProvider(IOptions options)
: base(options) { }
///
public override async Task GetPolicyAsync(string policyName)
{
// ...
return new AuthorizationPolicyBuilder().AddRequirements(requirement).Build();
}
}
[/code]
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]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();
[/code]
Ich habe versucht, Schritt für Schritt zu debuggen, um zu finden, was der CurrentantService wieder initialisieren kann.>