前言
所谓输入的是垃圾,输出也必然是垃圾,有多少安全问题隐藏在请求的数据中,所以永远不能相信来自用户端的输入。
对请求数据的合法性进行校验,不仅有助于提升用户界面的友好性,而且有助于提高后台程序的安全性和稳定性。
ASP.NET Core 主要通过内置的 DataAnnotations 实现对数据进行校验,DataAnnotations 是一组属性类,用于为模型类的属性添加验证规则,如必填、最大长度、正则表达式等,使用时非常方便,请看下面的 Step By Step 例子:
Step By Step 步骤
-
创建一个 Asp.Net Core WebApi 项目
-
创建 Login 操作方法的请求参数类 LoginRequest
using System.ComponentModel.DataAnnotations; public class LoginRequest { // 直接对类属性设置数据内置检验 [Required] [EmailAddress] [RegularExpression("^.*@(qq|163)\\.com$", ErrorMessage = "只支持QQ和163邮箱")] public string Email { get; set; } [Required] [StringLength(10, MinimumLength = 3)] public string Password { get; set; } [Compare(nameof(Password), ErrorMessage = "两次密码必须一致")] public string PasswordConfirm { get; set; } }
-
打开登录请求控制器,编写 Login API
using Microsoft.AspNetCore.Mvc; namespace DatavalidSample.Controllers { [ApiController] [Route("[controller]/[action]")] public class TestController : ControllerBase { // 执行时,自动对 LoginRequest 进行数据校验 [HttpPost] public ActionResult Login(LoginRequest req) { return Ok(req); } } }
总结
-
ASP.NET Core 内置数据校验使用起来非常简单,只需通过一些特性标记即可定义验证规则,不需要编写大量自定义代码
-
内置数据校验功能与 ASP.NET Core 框架紧密集成,可以方便地与 MVC、Web API 等组件结合使用
-
使用 DataAnnotations 特性标记,符合标准化的数据校验规范,易于理解和维护
-
内置的 DataAnnotations 特性提供了各种常用的验证规则,如必填、范围、正则表达式等,满足大部分常见的数据校验需求
总的来说,ASP.NET Core 内置数据校验功能适用于大多数简单的数据校验需求,能够提高开发效率和代码可维护性