.net core 虚张声势5.3.1虚张声势用户界面未发送授权标头
我将一个项目从DotnetCore2.1迁移到了3.1。除了在使用swagger ui时未发送授权标头外,其他一切都看起来不错。我发现了几个这样的例子,试图解决这个问题,这就是它的结果 标题 Startup.cs.net core 虚张声势5.3.1虚张声势用户界面未发送授权标头,.net-core,jwt,swagger-ui,.net-core-3.1,.net Core,Jwt,Swagger Ui,.net Core 3.1,我将一个项目从DotnetCore2.1迁移到了3.1。除了在使用swagger ui时未发送授权标头外,其他一切都看起来不错。我发现了几个这样的例子,试图解决这个问题,这就是它的结果 标题 Startup.cs services.AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultAu
services.AddAuthentication(options =>
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development") ? false : true;
options.ClaimsIssuer = jwtAppSettingOptions[nameof(JwtIssuerOptions.Issuer)];
options.TokenValidationParameters = tokenValidationParameters;
});
services.AddSwaggerGen(c =>
{
...
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Name = "Authorization",
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer",
BearerFormat = "JWT",
In = ParameterLocation.Header,
Description = "JWT Authorization header using the Bearer scheme."
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
new string[] {}
}
});
c.EnableAnnotations();
//
c.OperationFilter<HeaderParametersFilter>();
...
}
...
if (isAuthorized && !allowAnonymous) {
AddHeader(operation, "Authorization", "access token", "string", true, "Bearer {access token}");
}
...
private static void AddHeader(OpenApiOperation operation, string name, string description, string type, bool isRequired, string defaultValue)
{
operation.Parameters.Add(new OpenApiParameter
{
Name = name,
In = ParameterLocation.Header,
Description = description,
Required = isRequired,
Schema = new OpenApiSchema
{
Type = type,
Default = new OpenApiString(defaultValue)
}
});
}