我尝试将 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);
但它不起作用。
您可以使用以下代码来获取发行值:
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
};
});