【问题标题】:Data Injection from json file setting to JWT从 json 文件设置到 JWT 的数据注入
【发布时间】:2019-06-16 22:33:27
【问题描述】:

我正在尝试将 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】:

    您可以使用以下代码获取问题值:

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

    【讨论】:

    • 我已经实现了代码,经过测试,似乎工作正常,谢谢你的帮助!
    猜你喜欢
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 2021-12-27
    • 2018-07-04
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多