C# .NET核心-在运行时配置JWT身份验证
我有一个ASP.NET Core 2 Web应用程序,我正在需要身份验证的控制器上使用[Authorize]属性。作为身份验证,我使用的是C# .NET核心-在运行时配置JWT身份验证,c#,asp.net,authentication,asp.net-core,jwt-auth,C#,Asp.net,Authentication,Asp.net Core,Jwt Auth,我有一个ASP.NET Core 2 Web应用程序,我正在需要身份验证的控制器上使用[Authorize]属性。作为身份验证,我使用的是JWT,我可以在启动时使用 .AddJwtBearer(options => { options.Audience = "...."; options.Authority = "...."; }); 这将非常有效。我的问题是,我在启动时没有访问群体和权限的信息,我必须在运行时对此进行配置。 有什么方法可以做到这一点吗?您可以尝试: 注册
JWT
,我可以在启动时使用
.AddJwtBearer(options => {
options.Audience = "....";
options.Authority = "....";
});
这将非常有效。我的问题是,我在启动时没有访问群体和权限的信息,我必须在运行时对此进行配置。
有什么方法可以做到这一点吗?您可以尝试:
注册多jwt身份验证模式,并根据请求中的参数/request头值动态选择所需的模式。单击此处查看代码示例
配置并替换ISecurityTokenValidator。使用DI注入IHttpContextAccessor
从请求中读取数据。单击和获取代码示例
使用JwtSecurityTokenHandler
手动验证JWT令牌。单击此处查看代码示例
我不知道是否有办法做到你所要求的,但是。。。一旦启动类执行了ConfigureServices和Configure方法,您的Web应用程序将启动并运行,并准备好接收请求。那么,您什么时候会知道有关受众和权限的信息呢?基本上,第一个访问web应用程序的用户将进行设置。当该用户调用公共路由时,有关访问群体和权限的信息将在运行时的某个时刻被知道,这也是我想要尝试和重新配置身份验证的时候。@NuhRuqa请看一下这个示例