gpt4 book ai didi

swagger - JWT 身份验证和 Swagger 与 .NET Core 3.0

转载 作者:行者123 更新时间:2023-12-03 07:30:58 25 4
gpt4 key购买 nike

我正在使用 .NET Core 3.0 开发一些 Web API,并希望将它与 SwashBuckle.Swagger 集成。
它工作正常,但是当我添加 JWT 身份验证时,它无法按我预期的那样工作。
为此,我添加了以下代码:

services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My Web API", Version = "v1" });
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
});
添加后 AddSecurityDefinition功能,我可以看到授权按钮,当我点击它时,我看到下面的表格:
enter image description here
然后我输入 Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh .做完之后,希望能看到 authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh当我从 Swagger 向 Web API 发送请求时,在请求的 header 中,但未将授权添加到请求 header 中。我正在使用 SwashBuckle.Swagger(5.0.0-rc3)。请注意,有许多示例可以在 .NET Core 2.0 上正常运行,但 Swashbuckle swagger 函数在最新版本中发生了变化,因此我无法使用这些示例。

最佳答案

经过一番研究,我终于找到了答案here

在看到这个页面之前,我知道我应该使用 AddSecurityRequirement之后 AddSecurityDefinition因为样本很多,但是在.NET Core 3.0上函数参数发生了变化是一个问题。

顺便说一句,最终答案如下:

services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo {
Title = "My API",
Version = "v1"
});
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme {
In = ParameterLocation.Header,
Description = "Please insert JWT with Bearer into field",
Name = "Authorization",
Type = SecuritySchemeType.ApiKey
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement {
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
new string[] { }
}
});
});

关于swagger - JWT 身份验证和 Swagger 与 .NET Core 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58179180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com