首页 > 解决方案 > ASP.NET Core web api 编辑 Bearer auth

问题描述

我已经实现了承载身份验证,但我想在其中进行一些自定义操作。我需要验证声明token_id 是否使用数据库中的token_id签出。如果是,则请求应通过身份验证,在另一种情况下,应发回 401 响应。

标签: c#asp.net.netasp.net-coreasp.net-web-api

解决方案


为了验证不记名令牌,您可以自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;
            }
        };
    });

推荐阅读