gpt4 book ai didi

C# 依赖注入(inject) - 身份验证

转载 作者:行者123 更新时间:2023-11-30 18:45:31 25 4
gpt4 key购买 nike

我正在尝试找出 .net 核心依赖注入(inject)。我的项目目前是一个 web api,具有一些自定义身份验证。我已经像这样添加了我的身份验证(在“ConfigureServices”下的 Startups.cs 中:

services.AddAuthentication(Authentication.Hmac.HmacDefaults.AuthenticationScheme).AddHmac(options =>
{
options.AuthName = "myname";
options.CipherStrength = HmacCipherStrength.Hmac256;
options.EnableNonce = true;
options.RequestTimeLimit = 5;
options.PrivateKey = "myprivatekey";
});

我的问题是:如何在身份验证服务中访问 IMemoryCache?我尝试过创建一个新的 MemoryCache 并将其传入,但这不起作用。主要目标是检查 Nonce 值(查看它们是否在缓存中,如果是,则身份验证失败,如果不是,则添加到缓存身份验证通过)。

同样,这是 .NET Core 2(Web API)。

更新:

这是 HmacHandler 类的基础(实际执行身份验证的部分):

public class HmacHandler : AuthenticationHandler<HmacOptions>
{
private static string Signature;
private static string Nonce;
private static Encoding Encoder { get { return Encoding.UTF8; } set { } }

IMemoryCache MemoryCache { get; set; }

public HmacHandler(IOptionsMonitor<HmacOptions> options, ILoggerFactory logger, UrlEncoder encoder, IDataProtectionProvider dataProtection, ISystemClock clock)
: base(options, logger, encoder, clock)
{
}

protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{...}
}

然后是“选项”类。

public class HmacOptions : AuthenticationSchemeOptions
{...}

它不能有带参数的构造函数。我需要在 HmacHandler 类中使用 IMemoryCache。我尝试向其中添加 IMemoryCache(在构造函数等中)。那没有用。

最佳答案

您需要设置 IMemoryCache MemoryCache { get;放;如果您想通过依赖注入(inject)在类之外使用,则公开。

public IMemoryCache MemoryCache { get; set; }

关于C# 依赖注入(inject) - 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46383002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com