gpt4 book ai didi

wcf - 用户名密码验证器 : When DI and Framework collide

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

我正在为 WCF 服务构建自定义 UserNamePasswordValidator。我正在将服务与 Autofac + WCF/ Multi-Tenancy 连接起来,所有这些都很好地结合在一起。但是我不确定使用什么策略来连接/实现这个身份验证类。

理想情况下,我会从

public class MyValidator : UserNamePasswordValidator {
public MyValidator(Func<Owned<IMyUserService>> userservicefactory) {
...
}
}

但是,这在严格意义上是不可能的,因为 WCF 使用 UserNamePasswordValidator 的方式(唯一的选择似乎是无参数构造函数)。

所以,问题:
  • 我是正确的还是有一些 WCF 配置巫术可以配置 UserNamePasswordValidator 工厂?
  • 如果“否”,那么在这种情况下可以使用的最“DI 正确”的回退策略是什么?
  • 最佳答案

    我在启动时或在自定义 ServiceHostFactory 中用代码配置了服务主机。

    从 XML 配置中,我删除了

    <userNameAuthentication 
    userNamePasswordValidationMode="Custom"
    customUserNamePasswordValidatorType="Common.MyCustomUsernamePasswordValidator, Common"/ -->

    因为我在托管之前配置了我的容器:
    var auth = host.Credentials.UserNameAuthentication;
    auth.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
    auth.CustomUserNamePasswordValidator = container.Resolve<Common.MyCustomUsernamePasswordValidator>();

    关于wcf - 用户名密码验证器 : When DI and Framework collide,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6752340/

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