ASP.NET Core 中要求處理常式中的相依性插入
授權處理常式必須在使用相依性插入的組態期間,在服務集合中註冊。
假設您有一個想在授權處理常式內進行評估的規則存放庫,而該存放庫已在服務集合中註冊。 授權會解析並插入建構函式。
例如,若要使用 .NET 記錄基礎結構,請將 ILoggerFactory 插入處理常式,如下列範例所示:
public class SampleAuthorizationHandler : AuthorizationHandler<SampleRequirement>
{
private readonly ILogger _logger;
public SampleAuthorizationHandler(ILoggerFactory loggerFactory)
=> _logger = loggerFactory.CreateLogger(GetType().FullName);
protected override Task HandleRequirementAsync(
AuthorizationHandlerContext context, SampleRequirement requirement)
{
_logger.LogInformation("Inside my handler");
// ...
return Task.CompletedTask;
}
}
上述處理常式可以透過任何服務存留期註冊。 下列程式碼會使用 AddSingleton 來註冊上述處理常式:
builder.Services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();
應用程式啟動時會建立處理常式的執行個體,而 DI 會將已註冊的 ILoggerFactory
插入其建構函式中。
注意
請勿將使用 Entity Framework (EF) 的授權處理常式註冊為單一個體。
授權處理常式必須在使用相依性插入的組態期間,在服務集合中註冊。
假設您有一個想在授權處理常式內進行評估的規則存放庫,而該存放庫已在服務集合中註冊。 授權會解析並插入建構函式。
例如,若要使用 .NET 記錄基礎結構,請將 ILoggerFactory 插入處理常式,如下列範例所示:
public class SampleAuthorizationHandler : AuthorizationHandler<SampleRequirement>
{
private readonly ILogger _logger;
public SampleAuthorizationHandler(ILoggerFactory loggerFactory)
=> _logger = loggerFactory.CreateLogger(GetType().FullName);
protected override Task HandleRequirementAsync(
AuthorizationHandlerContext context, SampleRequirement requirement)
{
_logger.LogInformation("Inside my handler");
// ...
return Task.CompletedTask;
}
}
上述處理常式可以透過任何服務存留期註冊。 下列程式碼會使用 AddSingleton 來註冊上述處理常式:
services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();
應用程式啟動時會建立處理常式的執行個體,而 DI 會將已註冊的 ILoggerFactory
插入其建構函式中。
注意
請勿將使用 Entity Framework (EF) 的授權處理常式註冊為單一個體。