0
私はいくつかの承認を確認するカスタムポリシーを持っています。カスタムクラスをAuthorizationHandlerに注入する際の例外
Startup.cs:私はPermissionsManagerを利用したいCheckProjectAccessLevelHandlerインサイド
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IPermissionsManager, PermissionsManager>();
services.AddAuthorization(options =>
{
options.AddPolicy("HasPermission",
policy => policy.Requirements.Add(new CheckProjectAccessLevelRequirement()));
});
services.AddSingleton<IAuthorizationHandler, CheckProjectAccessLevelHandler>();
}
。期待どおりに動作PermissionsManagerのすべての注入がなければ
System.InvalidOperationException: Unable to resolve service for type 'myProject.Services.PermissionsManager' while attempting to activate 'myProject.Services.AuthHandlers.CheckProjectAccessLevelHandler'.
:
public class CheckProjectAccessLevelHandler : AuthorizationHandler<CheckProjectAccessLevelRequirement>
{
readonly AuthHandlersContext _dbAuthContext;
private readonly UserManager<ApplicationUser> _userManager;
private readonly PermissionsManager _permissionsManager;
public CheckProjectAccessLevelHandler(AuthHandlersContext context, UserManager<ApplicationUser> userManager, PermissionsManager permissionsManager)
{
_dbAuthContext = context;
_userManager = userManager;
_permissionsManager = permissionsManager;
}
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CheckProjectAccessLevelRequirement requirement)
{
_permissionsManager.doStuff()
}
}
は、しかし、私はこの例外を取得します。
私は何が間違っていますか?