0
我们有这个自定义的授权方案,我试图解决的能力,单元测试和在.NET核心中使用依赖注入。让我解释一下设置:.NET核心自定义授权依赖注入
我创建了一个接口IStsHttpClient和类StsHttpClient。此类连接到创建&解码令牌的内部Web服务。这有一个方法“DecodeToken(字符串标记)”,构造函数非常简单 - 它需要一个从DI加载的选项对象。
然后,我的AuthorizationHandler理论上会使用IStsHttpClient调用和解码令牌。我的问题是,基于在线示例,我不知道如何正确指定/构建授权处理程序(请参阅下面的代码)。
授权码在这里:
public class MyAuthorizationRequirement : AuthorizationHandler<MyAuthorizationRequirement >, IAuthorizationRequirement
{
const string Bearer = "Bearer ";
readonly IStsHttpClient _client;
public BuzzStsAuthorizationRequirement([FromServices]IStsHttpClient client)
{
_client = client;
}
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, MyStsAuthorizationRequirement requirement)
{
/* remaining code omitted - but this will call IStsHttpClient.Decode() */
我Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<StsHttpOptions>(Configuration.GetSection("StsConfigurationInfo"));
services.AddScoped<IStsHttpClient , StsHttpClient >();
services.AddAuthorization(options =>
{
options.AddPolicy("Authorize", policy =>
{
/* initialize this differently?? */
policy.AddRequirements(new MyStsAuthorizationRequirement(/* somethign is needed here?? */));
});
});
我最终实现了两天之后这个,我可以使用中间件做什么我想。 –