gpt4 book ai didi

自定义 CredentialsAuthProvider 中的 ServiceStack 访问 Ioc 容器

转载 作者:行者123 更新时间:2023-12-04 04:17:29 25 4
gpt4 key购买 nike

我扩展了 service-stack 提供的 CredentialsAuthProvider 以允许我针对 Active-Directory 实例进行身份验证。 AD 访问逻辑封装在一个名为 AdManager 的自定义类中(见下文)例如:

public class AdCredentialsAuthProvider : CredentialsAuthProvider
{
public override bool TryAuthenticate(IServiceBase authService,
string userName,
string password)
{
IAdManager manager = new AdManager();
return manager.Authenticate(userName, password);
}
...

问题:

  • 我希望我可以在我的扩展“AppHostBase”中使用服务堆栈内置 IoC“Funq.Container”注册 AdManager,并从我的自定义 CredentialsAuthProvider 中访问它?我尝试注册它,但没有找到通过内置框架的服务堆栈访问 IoC(或我注册的 AdManager 对象)的方法。

我错过了什么吗?谢谢

最佳答案

您可以使用提供的 IServiceBase 从 AuthProvider 中访问 IOC,例如:

var addManager = authService.TryResolve<IAdManager>();

在其他任何地方,您始终可以使用 Singleton 解决依赖关系:

var addManager = HostContext.TryResolve<IAdManager>();

否则,如果您知道它位于 ASP.NET Web 主机中,您也可以通过 AppHost 单例访问它:

var addManager = AppHostBase.Instance.Resolve<IAdManager>();

关于自定义 CredentialsAuthProvider 中的 ServiceStack 访问 Ioc 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15959134/

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