Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何将IHttpContextAccessor添加到AuthorizationHandler_Asp.net Core - Fatal编程技术网

Asp.net core 如何将IHttpContextAccessor添加到AuthorizationHandler

Asp.net core 如何将IHttpContextAccessor添加到AuthorizationHandler,asp.net-core,Asp.net Core,我正在尝试使用httpContext编写授权属性 public class AuthorizationCheck : AuthorizationHandler<AuthorizationCheck>, IAuthorizationRequirement { private readonly IHttpContextAccessor _httpContextAccessor; public Autho

我正在尝试使用httpContext编写授权属性

 public class AuthorizationCheck : AuthorizationHandler<AuthorizationCheck>, IAuthorizationRequirement
        {
    
            private readonly IHttpContextAccessor _httpContextAccessor;
    
            public AuthorizationCheck(IHttpContextAccessor httpContextAccessor)
            {
                _httpContextAccessor = httpContextAccessor;
            }
    }
    
          services.AddHttpContextAccessor();

     services.AddSingleton<IAuthorizationHandler, AuthorizationCheck>();
    
            services.AddAuthorization(options =>
            {
                options.AddPolicy("AuthorizationCheck",
                    policy => policy.Requirements.Add(new AuthorizationCheck()));
            });
公共类授权检查:授权处理程序,IAAuthorizationRequirement
{
专用只读IHttpContextAccessor\u httpContextAccessor;
公共授权检查(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor=httpContextAccessor;
}
}
AddHttpContextAccessor();
services.AddSingleton();
services.AddAuthorization(选项=>
{
options.AddPolicy(“授权检查”,
policy=>policy.Requirements.Add(newauthorizationcheck());
});
我的问题是我得到了这个错误:

没有给出与所需的形式化参数相对应的参数 的参数“httpContextAccessor” '授权检查。授权检查(IHttpContextAccessor)'


您构建的授权策略不正确。根据,您应该添加一个额外的类,该类也继承
IAuthorizationRequirement
,然后在
AuthorizationCheck
上,泛型类型参数应该是该额外的类。示例如下:

public class AuthorizationCheck : AuthorizationHandler<IsAdminRequirement>, IAuthorizationRequirement
        {
    
            private readonly IHttpContextAccessor _httpContextAccessor;
    
            public AuthorizationCheck(IHttpContextAccessor httpContextAccessor)
            {
                _httpContextAccessor = httpContextAccessor;
            }
    }

public class IsAdminRequirement : IAuthorizationRequirement { }

公共类授权检查:授权处理程序,IAAuthorizationRequirement
{
专用只读IHttpContextAccessor\u httpContextAccessor;
公共授权检查(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor=httpContextAccessor;
}
}
公共类IsAdminRequirement:IAAuthorizationRequirement{}

最后,在添加策略时,您需要添加
IsAdminRequirement
。请注意,此需求应仅包含需求所需的数据/逻辑-实际处理程序,
AuthorizationCheck
应包含对需求执行操作的依赖项注入。

您需要调用
services.AddHttpContextAccessor()您注册服务的地方。@asawyer谢谢,但我已经有了。