从 json 文件设置到 JWT 的数据注入

问题描述 投票:0回答:1

我尝试将 jwt 设置从 json 文件插入到 StartUp.ConfigureServices:

appsettings.json

  ...
  "jwt": {
    "key": "some_password123TEST!",
    "issuer": "http: //localhost:Port",
    "expiryMinutes": 60
  }

JwtSettings.cs

public class JwtSettings
{
  public string Key { get; set; }
  public string Issuer { get; set; }
  public int ExpiryMinutes { get; set; }
}

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
 ...
 services.Configure<JwtSettings>(Configuration.GetSection("jwt"));

  services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
   .AddJwtBearer(o =>
   {
       o.TokenValidationParameters = new TokenValidationParameters
       {
           // ValidateIssuer = true,
           ValidateIssuer = JwtSettings.Issuer ???
           ...
       });
   }

现在如何从 JwtSettings.Issuer 获取我的设置?

我尝试添加也将此添加到

Configure
方法:

app.ApplicationServices.GetService<JwtSettings>();

var test = app.ApplicationServices.GetService<JwtSettings>();
app.UseAuthentication(test);

但它不起作用。

c# authentication web-applications jwt asp.net-core-webapi
1个回答
2
投票

您可以使用以下代码来获取发行值:

services.Configure<JwtSettings>(Configuration.GetSection("jwt"));

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(o =>
{
    var config = services.BuildServiceProvider().GetRequiredService<IOptions<JwtSettings>>().Value;
    o.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidIssuer = config.Issuer
    };
});
© www.soinside.com 2019 - 2024. All rights reserved.