首页 > 其他分享 >.Net Core中读取json配置文件

.Net Core中读取json配置文件

时间:2023-10-30 15:38:27浏览次数:28  
标签:Core set 配置文件 get builder app Net true public

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;
     }
 }

标签:Core,set,配置文件,get,builder,app,Net,true,public
From: https://www.cnblogs.com/mzwhj/p/17797963.html

相关文章

  • EF Core 6.0.0.7无法将add-migration项识别为 cmdlet
    EFCore6.0.0.7无法将add-migration项识别为cmdlet解决方案:重新安装Microsoft.EntityFrameworkCore.Tools程序包管理器控制台主机版本6.2.1.2键入"get-helpNuGet"可查看所有可用的NuGet命令。PM>install-packageMicrosoft.EntityFrameworkCore.Tools......
  • 解决kubernetes flannel部署的具体操作步骤
    原文:https://blog.51cto.com/u_16175446/6683522KubernetesFlannel部署教程作为一名经验丰富的开发者,我将向你介绍在Kubernetes中部署Flannel网络插件的步骤和所需的代码。Flannel是一个用于Kubernetes集群的网络解决方案,它负责为Pod提供网络互通。整体流程以下是部署Kubernete......
  • java.net.SocketException四大异常解决方案
    java.net.SocketException四大异常解决方案java.net.SocketException如何才能更好的使用呢?这个就需要我们先要了解有关这个语言的相关问题。希望大家有所帮助。那么我们就来看看有关java.net.SocketException的相关知识。第1个异常是java.net.BindException:Addressalread......
  • Net 高级调试之三:类型元数据介绍(同步块表、类型句柄、方法描述符等)
    一、简介今天是《Net高级调试》的第三篇文章,压力还是不小的。上一篇文章,我们浅浅的谈了谈CLR和Windows加载器是如何加载Net程序集的,如何找到程序的入口点的,有了前面的基础,我们今天看一点更详细的东西。既然Windows操作系统已经加载了CLR,初始化了应用程序域,加载......
  • centos7.9重启网卡提示Failed to start LSB: Bring up/down networking.
    前几天给一台机器状态centos7.9系统,设备有2个网口,今天重启网卡一直失败,查看network状态,怀疑是eth0网卡有问题查看eth0的网卡配置,发现是eth0网卡的BOOTPROTO=dhcp,且ONBOOT=yes,但eth0网口没插网线,这导致重启网卡时,一直重启eth0,但是没插网线一直失败。解决方案:把eth0网卡的ONB......
  • kubernetes拉取私有Harbor仓库镜像
    场景描述私有镜像仓库:http://172.16.30.56kubernete集群使用的是containerdkubernete集群中部署服务时,报错:Error:ImagePullBackOffkubernetes拉取私有Harbor仓库镜像配置说明harbor检查确保私有harbor能正常访问,能正常推送镜像:页面访问正常docker获取镜像正常......
  • SpringCloud复习:(1)netflix包里的DiscoveryClient类
    DiscoveryClient类实现了EurekaClient接口它的主要作用:服务注册,服务续约,服务下线,获取服务列表。initScheduledTasks方法用来开启定时任务来完成上述功能。上图中的代码用来从服务器定期(默认30秒)拉取服务列表(ScheduledExecutorService的应用场景)其中TimedSupervisorTask这个Run......
  • .NET中的数组在内存中如何布局?
    总的来说,.NET的值类型和引用类型都映射一段连续的内存片段。不过对于值类型对象来说,这段内存只需要存储其字段成员,而对应引用类型对象,还需要存储额外的内容。就内存布局来说,引用类型有两个独特的存在,一个是字符串,另一个就是数组。我在《你知道.NET的字符串在内存中是如何存储的吗?......
  • 使用telnet来调试游戏
    telnet是什么Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力但是,telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统......
  • Net 高级调试之一:开始认识一些调试工具
    一、简介从今天开始一个长系列,Net高级调试的相关文章,我自从学习了之后,以前很多模糊的地方现在很清楚了,原来自己的功力还是不够,所以有很多不明白,通过学习Net高级调试,眼前豁然开朗,茅塞顿开。其实,刚开始要学习《Net高级调试》,还是很是很困难的,很多工具不会用,又不知道如......