• 闲话 ASP.NET Core 数据校验(一):内置数据校验


    iamge

    前言

    所谓输入的是垃圾,输出也必然是垃圾,有多少安全问题隐藏在请求的数据中,所以永远不能相信来自用户端的输入。

    对请求数据的合法性进行校验,不仅有助于提升用户界面的友好性,而且有助于提高后台程序的安全性和稳定性。

    ASP.NET Core 主要通过内置的 DataAnnotations 实现对数据进行校验,DataAnnotations 是一组属性类,用于为模型类的属性添加验证规则,如必填、最大长度、正则表达式等,使用时非常方便,请看下面的 Step By Step 例子:

    Step By Step 步骤

    1. 创建一个 Asp.Net Core WebApi 项目

    2. 创建 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; }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
    3. 打开登录请求控制器,编写 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);
      		}
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16

    总结

    1. ASP.NET Core 内置数据校验使用起来非常简单,只需通过一些特性标记即可定义验证规则,不需要编写大量自定义代码

    2. 内置数据校验功能与 ASP.NET Core 框架紧密集成,可以方便地与 MVC、Web API 等组件结合使用

    3. 使用 DataAnnotations 特性标记,符合标准化的数据校验规范,易于理解和维护

    4. 内置的 DataAnnotations 特性提供了各种常用的验证规则,如必填、范围、正则表达式等,满足大部分常见的数据校验需求

    总的来说,ASP.NET Core 内置数据校验功能适用于大多数简单的数据校验需求,能够提高开发效率和代码可维护性

  • 相关阅读:
    视频融合平台EasyCVR语音播报功能无法关闭,且告警信息与其需要警告的内容不匹配该如何解决?
    网络安全:系统目录介绍
    数据仓库为什么要分层建设?每一层的作用是什么?
    Java项目SpringMVC拦截器+Redis优化登录功能
    教你2种常用的电商高并发处理解决方案
    wazuh自定义规则-检测内网扫描行为
    线上云酒馆是什么?线上云酒馆怎么开发?
    再见 Xshell 这款开源的终端工具逼格更高
    Systemd Rsync 文件定时同步
    转发网关与NAT网关
  • 原文地址:https://blog.csdn.net/yangshuquan/article/details/138172038