asp.net核心如何使用swagger设置全局JWT?

How to use swagger to set the global JWT in asp.net core?

重新学习了asp.net核心,在个人项目中,使用了swagger接口文档。我遵循此文档,它工作正常,https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-3.1。但是我有个疑惑,就是token怎么用,我用的是asp.net core 3.1版本。如我图所示,虽然不是asp.net core做的,但是.net core怎么实现呢?

enter image description here

当我访问一个界面时,我需要一个登录令牌,因为我没有权限。我可以在 asp.net 核心中使用全局令牌吗?

你想通过登录生成一个token,然后传入这个token来访问一些权限API,对吧?

可以参考这段代码:

services.AddSwaggerGen(config =>
            {   
                      ////Name the security scheme
                config.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Description = "JWT Authorization",
                    Name = "Authorization",
                    In = ParameterLocation.Header,
                    Type = SecuritySchemeType.ApiKey,
                    Scheme = "bearer",
                    BearerFormat="JWT"
                });

                config.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
    {
        new OpenApiSecurityScheme
        {
            Reference = new OpenApiReference
            {
                Type = ReferenceType.SecurityScheme,

           //The name of the previously defined security scheme.
                Id = "Bearer"
            }

        },
        new List<string>()
    }
});

生成令牌的代码:

appsettings.json:

 "Jwt": {
    "Issuer": "testUser",
    "Audience": "user",
    "Key": "this is my custom Secret key for authnetication"
  },

 private string GerarTokenJWT()
        {
            var issuer = _config["Jwt:Issuer"];
            var audience = _config["Jwt:Audience"];
            var expiry = DateTime.Now.AddMinutes(120);
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
            var token = new JwtSecurityToken(issuer: issuer, audience: audience,
expires: expiry, signingCredentials: credentials);
            var tokenHandler = new JwtSecurityTokenHandler();
            var stringToken = tokenHandler.WriteToken(token);
            return stringToken;
        }

登录生成令牌:

然后验证: