Validation Post的ServiceStack验证规则集不起作用
我使用Validation Post的ServiceStack验证规则集不起作用,validation,
servicestack,Validation,
servicestack,我使用ServiceStack构建一个web服务 这是我的验证程序代码: public class AccountValidator : AbstractValidator<AccountModel> { public AccountValidator() { //only for post RuleSet(ServiceStack.ApplyTo.Post, () => { Rule
ServiceStack
构建一个web服务
这是我的验证程序代码:
public class AccountValidator : AbstractValidator<AccountModel>
{
public AccountValidator()
{
//only for post
RuleSet(ServiceStack.ApplyTo.Post, () =>
{
RuleFor(s => s.Password).Length(30);
});
}
}
公共类AccountValidator:AbstractValidator
{
公共帐户验证程序()
{
//仅限邮寄
规则集(ServiceStack.ApplyTo.Post,()=>
{
RuleFor(s=>s.Password).Length(30);
});
}
}
服务代码
public object Post(Account req) {
AccountModel model = req.ConvertTo<AccountModel>();
var result = this.Validator.Validate(model);
if (result.IsValid)
{
//is aways true
}
throw result.ToException();
}
public object Post(账户请求){
AccountModel model=req.ConvertTo();
var结果=this.Validator.Validate(模型);
if(result.IsValid)
{
//总是这样吗
}
抛出result.ToException();
}
帐户.Password是“abc”,正如结果.IsValid
是true
?结果总是true
,因为验证器中的ApplyTo.Post
条件只适用于在请求DTO时验证的规则。ApplyTo
条件不适用于手动调用的FluentValidation。看
但是,如果您正在将帐户
转换为帐户模型
,您可以使用验证功能
插件在转换为帐户模型
之前检查帐户
的验证
因此:
公共类AccountValidator:AbstractValidator
{
公共帐户验证程序()
{
规则集(ApplyTo.Post,()=>RuleFor(s=>s.Password).Length(30));
}
}
//帐户将在邮寄时验证
公共对象Post(帐户请求)
{
//帐户进入请求时有效
AccountModel model=req.ConvertTo();
//假设模型是有效的,因为帐户是有效的,这不安全吗?
}