asp.net core 中的请求数据校验
在平时开发过程中,我们需要对请求数据的合法性进行校验,一般来说我们可以通过客户端来进行校验,从而避免通过服务器校验,但是不排除一些恶意人员绕过客户端直接向服务器发送请求,所以服务器校验必不可少。
我们以下的例子主要是通过FluentValidation数据校验框架来进行验证:
1.先在项目中安装FluentValidation.AspNetCore NuGet包:
2.注册服务:
builder.Services.AddFluentValidation(fv=>{ Assembly assembly=Assembly.GetExecutingAssembly(); fv.RegisterValidatorsFromAssembly(assembly);});
3.编写模型类:
public class Login { /// <summary> /// 邮箱 /// </summary> public string Email{ get; set; } /// <summary> /// 密码 /// </summary> public string Password { get; set; } }
4.编写校验类,继承自AbstractValidator
/// <summary> /// 登陆账号验证 /// </summary> public class LoginAccoutValidation : AbstractValidator<Login>//尖括号里写的是需要验证的模型类 { public LoginAccoutValidation() { RuleFor(x=>x.Email).NotNull().EmailAddress()
.Must(v=>v.EndsWith("@qq.com")||v.EndsWith("@163.com"))
.WithMessage("只支持QQ和163邮箱");
RuleFor(x=>x.Email).NotNull().Length(3,10)
.WithMessage("密码长度必须介于3到10之间");
} }
其中有许多内置校验方法,比如说NotNull(非空)、EmailAddress(邮箱地址)、Length(字符串长度)
5.编写一个接口,用Login作为入参参数
刻意创造非法字符,用postman来测试,看返回结果