代码之家  ›  专栏  ›  技术社区  ›  4est

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

  •  0
  • 4est  · 技术社区  · 6 年前

    我正在尝试将json文件中的jwt设置插入startup.configureServices:

    应用设置.json

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

    JWTSETIN

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

    创业公司

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

    但不是这样的。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nan Yu    6 年前

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

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