swagger filters

This commit is contained in:
Tizian.Breuch
2025-07-23 09:15:14 +02:00
parent af72dda917
commit ddcdc599d1
2 changed files with 101 additions and 2 deletions

View File

@@ -10,7 +10,9 @@ using Webshop.Domain.Interfaces;
using Webshop.Infrastructure.Data;
using Webshop.Infrastructure.Repositories;
using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging;
using Microsoft.OpenApi.Models;
using Webshop.Api.SwaggerFilters;
var builder = WebApplication.CreateBuilder(args);
@@ -70,7 +72,39 @@ builder.Services.AddScoped<AdminProductService>();
// 5. Controller und Swagger/OpenAPI hinzuf<75>gen
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddSwaggerGen(c =>
{
// 1. JWT Security Definition hinzuf<75>gen
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header, // Der Token wird im Header gesendet
Type = SecuritySchemeType.Http, // Dies ist ein HTTP-Schema
Scheme = "Bearer" // Das Schema ist "Bearer"
});
// 2. Security Requirement f<>r alle Operationen hinzuf<75>gen
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer" // Verweist auf die oben definierte "Bearer" Sicherheit
}
},
new string[] {} // Keine spezifischen "Scopes" f<>r JWT (leer lassen)
}
});
// 3. Optional: Filtern und Anzeigen von Autorisierungsinformationen (Rollen)
// Damit Swagger die "Authorize"-Informationen von Ihren Controllern anzeigt.
c.OperationFilter<AuthorizeOperationFilter>();
});
// --- ENDE: DIENSTE ZUM CONTAINER HINZUF<55>GEN ---