.Net Core 数据校验框架使用

为了提高响应速度和界面可用性,一般在客户端都会对用户填写的数据进行校验,这样不需要把数据发送到服务端,用户就知道数据填写错误。但是也不能完全依赖客户端的校验,不仅因为恶意用户可以绕过客户端校验直接向服务器发送请求,而且服务器端也需要对于客户端开发人员对数据校验不到位的地方做兜底工作。所以,服务器端也应该做数据校验。

.Net Core 框架本身也内置了数据校验,比如必填校验[Require]等,但校验需要写在类本身上,校验规则和模型类具有较高的耦合性,违背单一职责原则,另一方面,内置的校验规则也不够多。

基于以上原因,使用FluentValidation数据校验框架,做数据的校验,下面在.Net Core WebAPI项目中使用框架做数据的校验。

1.创建项目并引用相关的包

fluentvalidation.aspnetcore

2.在Program.cs中添加注册相关服务的代码

builder.Services.AddFluentValidation(fv =>
{
    Assembly assembly = Assembly.GetExecutingAssembly();
    fv.RegisterValidatorsFromAssembly(assembly);
});

RegisterValidatorsFromAssembly方法用于把制定程序集中所有实现了IValidator接口的数据校验类注册到依赖注入容器中。因为本项目所有数据校验类都写到了一个项目中,所以用RegisterValidatorsFromAssembly获取入口项目的程序集。

如果有多个程序集,需要调用RegisterValidatorsFromAssemblies执行这些程序集进行注册。

3.编写模型类

namespace WebApplication1
{
    public record LoginRequest(string Email, string Password, string Password2);
}

4.编写一个数据校验类

using FluentValidation;

namespace WebApplication1
{
    public class LoginRequestVaildator : AbstractValidator<LoginRequest>
    {
        public LoginRequestVaildator()
        {
            RuleFor(x => x.Email).NotNull().EmailAddress()
                .Must(v => v.EndsWith("@qq.com") || v.EndsWith("@163.com"))
                .WithMessage("只支持QQ和163邮箱");

            RuleFor(x => x.Password).NotNull().Length(3, 10)
                .WithMessage("密码必须介于3到10位之间")
                .Equal(x => x.Password2).WithMessage("两次密码必须一致");
        }
    }
}

数据校验类一般集成自AbstractValidator,AbstractValidator是一个泛型类,需要通过泛型参数指定这个数据校验类对哪个类进行校验;校验规则需要写到校验类的构造方法中;

5.编写一个操作方法

        [HttpPost]
        public void dataVaild(LoginRequest login) {
            Console.WriteLine(login.Password);
        }

用LoginRequest作为参数,然后在客户端向这个操作方法对应的路径发送数据。

 

使用FluentValidation后,可以把数据校验的规则写到单独的书校验类中,这样模型类和数据校验类各司其职,符合“单一职责原则”,而且在FluentValidation中编写自定义校验代码也更加简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET Core是一个跨平台的开源框架,用于构建现代化的云端应用程序。JWT(JSON Web Token)是一种用于身份验证和信息传递的开放标准(RFC 7519),通常用于前后端分离的应用中进行用户身份验证和授权。 在ASP.NET Core中,我们可以使用JWT来进行用户的登录校验。首先,我们需要在服务器端生成JWT,并在用户登录成功后将JWT返回给客户端。客户端在之后的每次请求中都需要在请求头中携带JWT。服务器端收到请求后会从JWT中解析出用户信息并校验用户身份。 为了实现JWT登录校验,我们需要在ASP.NET Core应用中添加JWT认证中间件,并配置JWT的签名密钥、过期时间等参数。在用户登录成功后,我们可以使用JWT生成器来创建并返回JWT token。在客户端发送请求时,我们可以使用JWT验证器来验证JWT token,并根据验证结果进行相应的操作。 除了在服务器端进行JWT登录校验之外,我们还需要在客户端进行JWT的存储和管理。一般来说,客户端可以将JWT保存在本地存储,例如LocalStorage或SessionStorage中,并在每次请求中将JWT添加到请求头中。在一些安全性要求较高的场景中,客户端还可以使用HTTPOnly Cookie来保存JWT。 总之,ASP.NET Core提供了丰富的工具和中间件来简化JWT登录校验的实现,并且可以很好地与前后端分离的架构进行集成,让开发者可以便捷地实现用户身份验证和授权功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值