授权处理程序必须进行注册在配置期间服务集合中 (使用依赖关系注入)。
假设你有想要评估的授权处理程序内的规则的存储库和服务集合中已注册该存储库。 授权将解决,然后将它注入到您的构造函数。
例如,如果你想要使用 ASP。NET 的日志记录基础结构要注入ILoggerFactory
到您的处理程序。 此类处理程序可能如下所示:
public class LoggingAuthorizationHandler : AuthorizationHandler<MyRequirement> { ILogger _logger; public LoggingAuthorizationHandler(ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger(this.GetType().FullName); } protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MyRequirement requirement) { _logger.LogInformation("Inside my handler"); // Check if the requirement is fulfilled. return Task.CompletedTask; } }
将注册处理程序替换services.AddSingleton()
:
services.AddSingleton<IAuthorizationHandler, LoggingAuthorizationHandler>();
该处理程序将你的应用程序启动时创建的实例并注入的已注册的 DI 将ILoggerFactory
到您的构造函数。
备注
使用实体框架的处理程序不应注册为单一实例。