前言:
眼前我们对“asp登录和验证代码”可能比较注意,朋友们都需要剖析一些“asp登录和验证代码”的相关知识。那么小编也在网上搜集了一些关于“asp登录和验证代码””的相关知识,希望兄弟们能喜欢,姐妹们一起来学习一下吧!在开发asp.net core时,通常会在appsettings.json中配置信息,这些信息都是以一个json的格式存储,在程序中通过Options的方式来绑定实体类使用,如下面的APIConfig和实体类。
配置文件:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "APIConfig": { "TimeOut": 2000, "Category": "Small", "Max": 1.5 }}
APIConfig实体类:
public class APIConfig{ public int TimeOut { get; set; } public string? Category { get; set; } public double Max { get; set; }}public enum Category{ None, Large, Small, Middle}
配置裸奔是有相当风险的,每个配置项都应该特定的含义和范围,当不合规配置随着系统启动,悄悄地进入服务状态时,就相当埋了一颗雷,肯定有人会在某时间踩上,爆掉,形成一次生产事帮。为了把这个风险消除掉,那就要给这些配置设置个围栏——即验证。
可以在服务启动时,添加Valdate来验证配置文件。首先用Bind方式取出要验证的配置实体,再次就是用Validate方法逐个验证为了把问题尽早暴露,当然,怎么验证,验证那些属性,自行决定。
using Microsoft.Extensions.Options;using System.ComponentModel.DataAnnotations;var builder = WebApplication.CreateBuilder(args);builder.Services .AddOptions<APIConfig>() .Bind(builder.Configuration.GetSection(nameof(APIConfig))) .Validate(c => { return c.TimeOut > 0 && c.TimeOut <= 1000 && c.Max >= -1.5 && c.Max <= 1.5 && Enum.TryParse<Category>(c.Category, true, out Category o); },"APIConfig配置有误!") .ValidateOnStart();var app = builder.Build();app.MapGet("/apiconfig", (IOptions<APIConfig> options) =>{ return options.Value;});app.Run();
其实验证在.net很普及,使用的是DataAnnotations,当然,这里也不例外,可以在实体类上添加具体的验证规则,这里就不展开了。代码如下:
using Microsoft.Extensions.Options;using System.ComponentModel.DataAnnotations;var builder = WebApplication.CreateBuilder(args);builder.Services .AddOptions<APIConfig>() .Bind(builder.Configuration.GetSection(nameof(APIConfig))) .ValidateDataAnnotations() .ValidateOnStart();var app = builder.Build();app.MapGet("/apiconfig", (IOptions<APIConfig> options) =>{ return options.Value;});app.Run();public class APIConfig{ [Range(0,1000)] public int TimeOut { get; set; } [EnumDataType(typeof(Category))] public string? Category { get; set; } [Range(-1.5, 1.5)] public double Max { get; set; }}public enum Category{ None, Large, Small, Middle}
保障生产安全,再多一点努力也是值的。不放过每个小细节,让你的服务在成长。
标签: #asp登录和验证代码