授權處理程序必須在 使用 依賴注入的配置時註冊於服務集合中。
假設你有一個想要在授權處理程式中評估的規則庫,而該庫在服務集合中註冊。 授權機制會解析並注入到建構函數中。
例如,要使用 .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>();
當應用程式啟動時會建立處理器實例,並且會將已註冊的 ILoggerFactory 透過 DI 注入到其建構函數。
備註
不要將使用 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)的授權處理常式註冊為單例。