C# ASP.NET核心web api编辑承载身份验证

C# ASP.NET核心web api编辑承载身份验证,c#,asp.net,.net,asp.net-core,asp.net-web-api,C#,Asp.net,.net,Asp.net Core,Asp.net Web Api,我已经实现了Bearer auth,但是我想在其中进行一些自定义操作。 我需要验证声明令牌\u id是否与数据库中的令牌\u id签出。如果是这样,请求应该通过身份验证,在另一种情况下,401响应应该被发回。要验证承载令牌,您可以自定义OnTokenValidated类似 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => {

我已经实现了Bearer auth,但是我想在其中进行一些自定义操作。
我需要验证声明令牌\u id是否与数据库中的令牌\u id签出。如果是这样,请求应该通过身份验证,在另一种情况下,401响应应该被发回。

要验证承载令牌,您可以自定义
OnTokenValidated
类似

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.Events = new JwtBearerEvents {
            OnTokenValidated = async context =>
            {                            
                var accessToken = context.SecurityToken as JwtSecurityToken;
                var dbContext = services.BuildServiceProvider().CreateScope().ServiceProvider.GetRequiredService<ApplicationDbContext>();
                var tags = await dbContext.Tags.ToListAsync();
                context.Fail("Token is invalid");
                return;
            }
        };
    });
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(选项=>
{
options.Events=newjwtbearerevents{
OnTokenValidated=异步上下文=>
{                            
var accessToken=context.SecurityToken作为JwtSecurityToken;
var dbContext=services.BuildServiceProvider().CreateScope().ServiceProvider.GetRequiredService();
var tags=await dbContext.tags.ToListAsync();
context.Fail(“令牌无效”);
返回;
}
};
});

谢谢!这正是我想要的!:-)