2014-11-07 2 views
1

ServiceStack 4.0.33과 함께 작업하고 있습니다.ServiceStack 사용자 정의

RegisterService() 주변에 사용자 정의 유효성 검사를 추가하는 방법을 정리하려고합니다.

기본적으로 등록을 허용하기 전에 일회용 베타 키를 확인해야합니다. 키가 양호하면 등록 성공 후 키가 소비 된 것으로 플래그됩니다. 사용자 정의 RegistrationValidator를 구현하려고 시도했지만 서비스 스택이 사용하는 기본 레지스터 인 dto는 분명히 유효성을 검사하는 데 적합한 속성을 가지고 있지 않습니다.

DTO 등록을 상속 한 사용자 지정 클래스를 만들려고했지만 등록 서비스 또는 RegistrationValidator가이를 처리하는 방법을 알 수 없습니다.

또한 RegistrationService를 상속하는 클래스를 만들었지 만 재정의 할 클래스는 없습니다.

기본적으로 등록을 위해 제공되는 것으로 보이는 항목은 모두 입니다. Plugins.Add (새 RegistrationFeature());

나는 이것이 잘못된 방향에서 완전히 공격하고 있다고 생각합니다. 등록 메커니즘을 둘러싼 진정한 유연성은 없습니다. 어떤 지침을 사용할 수 있습니다. ,

public class CustomRegistrationValidator : RegistrationValidator 
{ 
    public CustomRegistrationValidator() 
    { 
     RuleSet(ApplyTo.Post,() => 
     { 
      RuleFor(x => x.UserName).Must(x => false) 
       .WithMessage("CustomRegistrationValidator is fired"); 
     }); 
    } 
} 

가 검증을 등록하려면 :

답변

1

당신은 예를 들어, 그렇지 않으면 당신은 완전히 자신의 IMPL으로 덮어 AbstractValidator<Register>을 상속 할 수 있습니다, 기존의 검증을 상속 기존 RegistrationValidator을 상속하는 사용자 정의 유효성 검사기를 만들 수 있습니다 당신은 어떤 의존성, 예를 들면처럼 등록 할 수 있습니다 : 등록 서비스가 바로 IOC에서 해결

container.RegisterAs<CustomRegistrationValidator, IValidator<Register>>(); 

이 기능을 사용하려면

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