在 OnMessageReceived 方法中验证承载令牌的过程中,我想访问我的一项服务。我可以手动创建它的实例,但我想使用内置的依赖项注入机制。我怎样才能做到这一点?我无法通过提供的 TokenValidatedContext 找到任何合适的方法。
你可以试试这个:
public static IServiceCollection AddJwtTokenAuthentication(this
IServiceCollection services, IConfiguration configuration)
{
services.Configure<JwtConfig>
(configuration.GetSection("JWTSettings"));
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(x =>
{
x.Events = new JwtBearerEvents()
{
OnMessageReceived = c =>
{
var sp = services.BuildServiceProvider();
var fooService = sp.GetService<IFooService>();
return Task.CompletedTask;
}
}