ServiceStack自定义注册

本文关键字:注册 自定义 ServiceStack | 更新日期: 2023-09-27 18:29:33

我正在使用ServiceStack 4.0.33。

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

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

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

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

基本上,所有提供注册的内容都是Plugins.Add(new RegistrationFeature());

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

ServiceStack自定义注册

您可以创建一个继承现有RegistrationValidator的自定义验证器来继承现有验证,否则您可以继承AbstractValidator<Register>来用自己的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>>();

注册服务机构刚刚从国际奥委会那里决定使用它:

public class RegisterService<TUserAuth> : Service
{
    public IValidator<Register> RegistrationValidator { get; set; }
    //...
}