FluentValidation未在无效模型状态下自动拒绝请求



验证器都放在同一个项目中(与Startup.cs一起(。
代码形式Startup.cs:

services.AddControllers()
.AddFluentValidation(s =>
{
s.RegisterValidatorsFromAssemblyContaining<Startup>();
});

当请求数据不符合验证器集规则时,ModelState.IsValid属性实际上变为false,但我需要手动设置实际的验证器错误消息。

验证器本身:
public class UserRegistrationRequestValidator : AbstractValidator<RegisterUserRequest>
{
/// <summary>
/// Initializes a new instance of the <see cref="UserRegistrationRequestValidator"/> class.
/// </summary>
public UserRegistrationRequestValidator()
{
RuleFor(u => u.Email)
.Matches("^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$")
.WithMessage(RegistrationRequestValidatorMessages.WrongEmailFormat);
RuleFor(u => u.Password)
.Matches("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$")
.WithMessage(RegistrationRequestValidatorMessages.PasswordFormatNotValid);
RuleFor(u => u.FirstName)
.Matches("^[A-Za-z]{2,15}$")
.WithMessage(RegistrationRequestValidatorMessages.FirstNameWrongFormat);
RuleFor(u => u.LastName)
.Matches("^[A-Za-z]{2,15}$")
.WithMessage(RegistrationRequestValidatorMessages.LastNameWrongFormat);
}
}

基本上,我忘记用[ApiController][Route]属性标记AuthenticationController。

相关内容

最新更新