.Net Core中读取json配置文件
1、编写实例化类。新建可供实例化的配置类JwtConfig
/// <summary> /// Jwt的配置类 /// </summary> public class JwtConfig { /// <summary> /// 定位 /// </summary> public const string Position = "Jwt"; /// <summary> /// 验证签发人 /// </summary> public bool ValidateIssuer { get; set; } = true; /// <summary> /// 验证有效期 /// </summary> public bool ValidateLifetime { get; set; } = true; /// <summary> /// 验证签名 /// </summary> public bool ValidateIssuerSigningKey { get; set; } = true; /// <summary> /// 必须包含过期时间 /// </summary> public bool RequireExpirationTime { get; set; } = true; /// <summary> /// 签发人 /// </summary> public string Issuer { get; set; } = string.Empty; /// <summary> /// 签名key /// </summary> public string SecretKey { get; set; } = string.Empty; /// <summary> /// 偏移时间。秒 /// </summary> public int ClockSkew { get; set; } = 0; }
2、添加配置文件。在项目根目录添加配置文件jwt.jso,在文件属性中选择“如果较新则复制”
{ "Jwt": { "ValidateIssuer": true, "ValidateLifetime": true, "ValidateIssuerSigningKey": true, "RequireExpirationTime": true, "Issuer": "Ninesky", "SecretKey": "VA_aLFng0lBp0@DN@@S3vMJ@xU2XN1je", "ClockSkew": 30 } }
3、读取配置文件,并添加到配置中
打开项目的Program.cs文件
在var builder = WebApplication.CreateBuilder(args);之后,var app = builder.Build();之前添加
builder.Configuration.AddJsonFile("jwt.json", false, true);
4、将配置注入到容器中。
在上一语句后添加代码
builder.Services.Configure<JwtConfig>(builder.Configuration.GetSection(JwtConfig.Position));
整个看起来如下:
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; using System.Text; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Configuration.AddJsonFile("jwt.json", false, true); builder.Services.Configure<JwtConfig>(builder.Configuration.GetSection(JwtConfig.Position)); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseAuthorization(); app.MapControllers(); app.Run();
5、在Program.cs中使用配置
在第4部的后面添加代码
var jwtConfig = builder.Configuration.GetSection(JwtConfig.Position).Get<JwtConfig>();
然后直接使用实例化类jwtConfig
6、在控制器中使用
在控制器的构造函数中注入IOptionsSnapshot<JwtConfig>
[Route("[controller]")] [ApiController] public class TokenController : ControllerBase { private JwtConfig jwtConfig; public TokenController(IOptionsSnapshot<JwtConfig> options) { this.jwtConfig = options.Value; } }