2014-11-07 4 views
1

Я работаю с ServiceStack 4.0.33.ServiceStack Пользовательская регистрация

Я пытаюсь выяснить, как добавить пользовательскую проверку вокруг RegisterService().

В основном, что мне нужно сделать, это проверить бета-ключ один раз, прежде чем разрешить регистрацию. Если ключ хорош, ключ будет отмечен как потребляемый после успешной регистрации. Я начал с реализации пользовательского параметра RegistrationValidator, но, по умолчанию, для этого стека служб, используемого по умолчанию, не имеет подходящего свойства для проверки.

Я пробовал создать пользовательский класс, который наследуется от регистра DTO, но я не могу понять, как сообщить RegistrationService или RegistrationValidator работать против него.

Я также посмотрел на создание класса, который наследуется от RegistrationService, но нечего переопределять.

В основном все, что представляется для регистрации, - . Plugins.Add (new RegistrationFeature());

Я подозреваю, что полностью атакую ​​это из-за неправильного направления. Либо это, либо действительно нет гибкости вокруг механизма регистрации. может использовать некоторые рекомендации.

ответ

1

Вы можете просто создать пользовательский валидатор, который наследует существующий RegistrationValidator наследовать существующие проверки, в противном случае вы можете наследовать AbstractValidator<Register> переписать его полностью с вашим собственным осущ, например:

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; } 
    //... 
} 
Смежные вопросы