.Net Core中读取json配置文件

1、编写实例化类。新建可供实例化的配置类JwtConfig

///


/// Jwt的配置类
///

public class JwtConfig
{
///
/// 定位
///

public const string Position = "Jwt";

///


/// 验证签发人
///

public bool ValidateIssuer { get; set; } = true;

///


/// 验证有效期
///

public bool ValidateLifetime { get; set; } = true;
///
/// 验证签名
///

public bool ValidateIssuerSigningKey { get; set; } = true;

///


/// 必须包含过期时间
///

public bool RequireExpirationTime { get; set; } = true;

///


/// 签发人
///

public string Issuer { get; set; } = string.Empty;
///
/// 签名key
///

public string SecretKey { get; set; } = string.Empty;
///
/// 偏移时间。秒
///

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(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(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

6、在控制器中使用

在控制器的构造函数中注入IOptionsSnapshot<JwtConfig>

[Route("[controller]")]
[ApiController]
public class TokenController : ControllerBase
{
private JwtConfig jwtConfig;
public TokenController(IOptionsSnapshot options) {

this.jwtConfig = options.Value;
}
}

posted @ 2023-10-30 15:21  洞庭夕照  阅读(344)  评论(0)    收藏  举报