- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 asp.net core 3.1 Web api 项目,代码如下:
Startup.cs
public virtual void ConfigureServices(IServiceCollection services) =>
services
.AddFrameworkServices()
.AddApplicationInsights(this.configuration)
.AddResponseCompression()
.AddCustomConfigureOptions();
CustomServiceCollectionExtensions.cs
public static IServiceCollection AddCustomConfigureOptions(this IServiceCollection services) =>
services
.ConfigureOptions<ConfigureAuthenticationOptions>();
.ConfigureOptions<ConfigureJwtBearerOptions>();
ConfigureAuthenticationOptions.cs
public class ConfigureAuthenticationOptions : IConfigureOptions<AuthenticationOptions>
{
public void Configure(AuthenticationOptions options) =>
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}
配置JwtBearerOptions
public class ConfigureJwtBearerOptions : IConfigureOptions<JwtBearerOptions>
{
private readonly IConfiguration configuration;
public ConfigureJwtBearerOptions(IConfiguration configuration) => this.configuration = configuration;
public void Configure(JwtBearerOptions options)
{
options.Authority = configuration[C.AppKeys.AADInstance] + configuration[C.AppKeys.AADTenantID];
options.Audience = configuration[C.AppKeys.AADAudience];
}
}
在调试时我发现ConfigureJwtBearerOptions.cs文件的Configure方法没有被触发
任何人都可以帮助我指导解决此问题
最佳答案
我正在使用 .Net Core 6 并遇到同样的错误。这里的巧妙之处在于 .AddJwtBearer() 使用命名选项委托(delegate)。
不要实现 IConfigureOptions,而是实现 IConfigureNamedOptions
配置JwtBearerOptions.cs
public class ConfigureJwtBearerOptions : IConfigureNamedOptions<JwtBearerOptions>
{
private readonly JwtOptions config;
private readonly ILogger<ConfigureJwtBearerOptions> logger;
/// <summary>
/// Configure JWT auth
/// </summary>
/// <param name="jwtOptions"></param>
/// <param name="logger"></param>
public ConfigureJwtBearerOptions(JwtOptions jwtOptions, ILogger<ConfigureJwtBearerOptions> logger)
{
config = jwtOptions;
this.logger = logger;
}
/// <inheritdoc/>
public void Configure(JwtBearerOptions options)
{
Configure(JwtBearerDefaults.AuthenticationScheme, options);
}
public void Configure(string name, JwtBearerOptions options)
{
options.Authority = config.Authority;
options.Audience = config.Audience;
logger.LogInformation("OAuth authority: {0}", config.Authority);
logger.LogInformation("OAuth audience: {0}", config.Audience);
//...
}
}
此外,您还需要在 Startup.cs 中调用 AddAuthentication()
Startup.cs
//...
services.AddAuthentication().AddJwtBearer();
关于c# - JwtBearerOptions 配置方法未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71132926/
我有 asp.net core 3.1 Web api 项目,代码如下: Startup.cs public virtual void ConfigureServices(IServiceCollec
我有 asp.net core 3.1 Web api 项目,代码如下: Startup.cs public virtual void ConfigureServices(IServiceCollec
我正在尝试查找如何配置 jwt 承载及其 JwtBearerOptions 的文档在 asp.net 核心中,使用 Microsoft 预定义的配置部分/键从配置文件中获取。 Mucrosoft 文档
我正在尝试向我的 ASP.NET Web 应用程序添加一些不记名 token 验证。我正在使用内置的 JWT 身份验证代码,配置为使用以下代码... services.AddAuthenticatio
JwtBearer 的 .Net Core Api 如下所示: _services .AddJwtBearer(options => { options.Events
Microsoft Docs只要有这个描述: Defines whether the bearer token should be stored in the AuthenticationProper
如果我在 Visual Studio 2017 中创建新的 ASP.NET Core MVC 应用程序,我可以使用一行将客户端 key 添加到 AzureAdServiceCollectionExte
我有一个 ASP .Net Core API 项目。在这个项目中,我使用 JWTBearer 身份验证。我还使用了 .Net Core 依赖注入(inject)的 AddDistributedRedi
我是一名优秀的程序员,十分优秀!