servicestack,C#,Asp.net,servicestack" /> servicestack,C#,Asp.net,servicestack" />

C# ServiceStack自定义注册

C# ServiceStack自定义注册,c#,asp.net,servicestack,C#,Asp.net,servicestack,我正在使用ServiceStack 4.0.33 我试图找出如何在RegisterService()中添加一些自定义验证 基本上我需要做的是在允许注册之前验证一次性使用beta密钥。如果密钥良好,注册成功后,密钥将被标记为已使用。我开始尝试实现一个自定义RegistrationValidator,但服务堆栈使用的默认寄存器dto显然没有适合我验证的属性 我已经尝试创建一个从Register DTO继承的自定义类,但是我不知道如何告诉RegistrationService或Registration

我正在使用ServiceStack 4.0.33

我试图找出如何在RegisterService()中添加一些自定义验证

基本上我需要做的是在允许注册之前验证一次性使用beta密钥。如果密钥良好,注册成功后,密钥将被标记为已使用。我开始尝试实现一个自定义RegistrationValidator,但服务堆栈使用的默认寄存器dto显然没有适合我验证的属性

我已经尝试创建一个从Register DTO继承的自定义类,但是我不知道如何告诉RegistrationService或RegistrationValidator对其进行操作

我还研究了如何创建一个从RegistrationService继承的类,但没有什么可以重写的

基本上,为注册提供的所有信息都是 Add(newregistrationfeature())


我怀疑我完全是从错误的方向攻击这件事。要么如此,要么登记机制确实没有灵活性。我需要一些指导

您只需创建一个自定义验证器,该验证器继承现有的
RegistrationValidator
即可继承现有的验证,否则您可以继承
AbstractValidator
以使用您自己的impl完全覆盖它,例如:

public class CustomRegistrationValidator : RegistrationValidator
{
    public CustomRegistrationValidator()
    {
        RuleSet(ApplyTo.Post, () =>
        {
            RuleFor(x => x.UserName).Must(x => false)
                .WithMessage("CustomRegistrationValidator is fired");
        });
    }
}
要注册验证器,您可以像任何依赖项一样注册它,例如:

container.RegisterAs<CustomRegistrationValidator, IValidator<Register>>();
container.RegisterAs();
注册服务机构刚刚从国际奥委会获得使用许可:

public class RegisterService<TUserAuth> : Service
{
    public IValidator<Register> RegistrationValidator { get; set; }
    //...
}
公共类注册服务:服务
{
公共IValidator注册验证程序{get;set;}
//...
}