0Pricing
C# Academy · Lekcja

Autoryzacja oparta na zasadach

Definiuj wielokrotnego użytku zasady autoryzacji.

Autoryzacja oparta na zasadach to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.

Model polityk

W ASP.NET Core każde sprawdzenie autoryzacji ostatecznie przebiega przez politykę. Atrybuty ról i claims to skrócony zapis, który w tle tworzy polityki.

Definiowanie nazwanych polityk centralizuje reguły i pozwala zachować porządek w kontrolerach.

[Authorize(Policy = "CanManageOrders")]

AddAuthorization

Polityki rejestruje się w kontenerze usług za pomocą AddAuthorization. Każda polityka otrzymuje unikatową nazwę.

builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("CanManageOrders", policy =>
        policy.RequireRole("admin", "sales"));
});

RequireAuthenticatedUser

Najbardziej podstawowym wymaganiem jest po prostu zalogowanie użytkownika. RequireAuthenticatedUser odrzuca anonimowych wywołujących.

options.AddPolicy("SignedIn", policy =>
    policy.RequireAuthenticatedUser());

Łączenie wymagań

Konstruktor polityki łączy wiele wymagań; polityka powiedzie się tylko wtedy, gdy wszystkie zostaną spełnione.

options.AddPolicy("SeniorEditor", policy =>
    policy
        .RequireAuthenticatedUser()
        .RequireRole("editor")
        .RequireClaim("seniority", "senior"));

Polityka domyślna

Sam atrybut [Authorize] bez argumentów używa polityki domyślnej, która domyślnie wymaga jedynie uwierzytelnionego użytkownika. Można ją zastąpić.

options.DefaultPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .RequireClaim("email_verified", "true")
    .Build();

Polityka fallback

Polityka fallback ma zastosowanie do endpointów, które nie mają żadnego atrybutu autoryzacji — to skuteczny sposób na zabezpieczenie aplikacji domyślnie.

options.FallbackPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .Build();
// Now every endpoint requires auth unless marked [AllowAnonymous]

Rezygnacja za pomocą AllowAnonymous

Gdy polityka fallback blokuje dostęp do wszystkiego, należy użyć [AllowAnonymous], aby udostępnić publiczne endpointy, takie jak logowanie lub kontrola stanu zdrowia.

[AllowAnonymous]
[HttpGet("health")]
public IActionResult Health() => Ok("healthy");

Stosowanie polityk do endpointów

Należy odwoływać się do polityki po nazwie w atrybutach lub rozszerzeniach Minimal API.

// Controller
[Authorize(Policy = "SeniorEditor")]
public IActionResult Publish() => Ok();

// Minimal API
app.MapPost("/publish", () => Results.Ok())
   .RequireAuthorization("SeniorEditor");

Grupowanie endpointów

Politykę można zastosować do całej grupy tras, aby każdy znajdujący się w niej endpoint automatycznie ją dziedziczył.

var admin = app.MapGroup("/admin")
               .RequireAuthorization("CanManageOrders");

admin.MapGet("/stats", () => Results.Ok());
admin.MapDelete("/{id}", (int id) => Results.NoContent());

Wymagania od środka

Każde wywołanie Require* dodaje do polityki obiekt IAuthorizationRequirement. Odpowiedni handler ocenia każde wymaganie. W przypadku elementów wbudowanych odbywa się to automatycznie, natomiast niestandardowe reguły wymagają własnego handlera (w następnej lekcji).

// RequireRole("admin") adds a RolesAuthorizationRequirement
// RequireClaim(...) adds a ClaimsAuthorizationRequirement

Gdzie definiować polityki

Wszystkie definicje polityk należy umieścić w jednej metodzie rozszerzającej, aby można je było łatwo znaleźć i testować.

public static IServiceCollection AddAppPolicies(
    this IServiceCollection services)
{
    services.AddAuthorization(o =>
    {
        o.AddPolicy("SignedIn", p => p.RequireAuthenticatedUser());
        o.AddPolicy("CanManageOrders", p => p.RequireRole("admin"));
    });
    return services;
}

Szybki test

Sprawdź swoje rozumienie polityki domyślnej i polityki fallback.

Podsumowanie

Poznali Państwo autoryzację opartą na politykach:

  • AddPolicy definiuje nazwane reguły wielokrotnego użytku.
  • RequireAuthenticatedUser, RequireRole i RequireClaim łączą się z semantyką AND.
  • DefaultPolicy obsługuje sam atrybut [Authorize], a FallbackPolicy zabezpiecza nieoznaczone endpointy.
  • [AllowAnonymous] wyłącza działanie polityki.

Następnie: niestandardowe wymagania i handlery autoryzacji.

Często zadawane pytania

Czy lekcja „Autoryzacja oparta na zasadach” jest bezpłatna?

Tak — pełny tekst „Autoryzacja oparta na zasadach” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Autoryzacja oparta na zasadach”?

Definiuj wielokrotnego użytku zasady autoryzacji. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Autoryzacja oparta na zasadach”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Autoryzacja oparta na rolach
  2. Autoryzacja oparta na deklaracjach
  3. Autoryzacja oparta na zasadach
  4. Niestandardowe wymagania autoryzacji
← Powrót do C# Academy