Policybasert autorisasjon
Definer gjenbrukbare autorisasjonspolicyer.
Policybasert autorisasjon er en gratis leksjon i C# Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C# Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C# Academy inneholder totalt 4 leksjoner.
Policy-modellen
I ASP.NET Core går alle autorisasjonskontroller til syvende og sist gjennom en policy. Rolle- og claims-attributter er kortformer som bygger policyer i bakgrunnen.
Ved å definere navngitte policyer samler De reglene på ett sted og holder kontrollerne ryddige.
[Authorize(Policy = "CanManageOrders")]AddAuthorization
Registrer policyer i tjenestebeholderen med AddAuthorization. Hver policy får et unikt navn.
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("CanManageOrders", policy =>
policy.RequireRole("admin", "sales"));
});RequireAuthenticatedUser
Det mest grunnleggende kravet er ganske enkelt at brukeren er logget inn. RequireAuthenticatedUser avviser anonyme kallere.
options.AddPolicy("SignedIn", policy =>
policy.RequireAuthenticatedUser());Kombinere krav
En policybygger lenker sammen flere krav; policyen lykkes bare hvis alle blir oppfylt.
options.AddPolicy("SeniorEditor", policy =>
policy
.RequireAuthenticatedUser()
.RequireRole("editor")
.RequireClaim("seniority", "senior"));Standardpolicyen
En enkel [Authorize] uten argumenter bruker standardpolicyen, som som standard bare krever en autentisert bruker. De kan erstatte den.
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireClaim("email_verified", "true")
.Build();Fallback-policyen
Fallback-policyen gjelder for endepunkter som ikke har noe autorisasjonsattributt i det hele tatt – en effektiv måte å sikre alt som standard.
options.FallbackPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
// Now every endpoint requires auth unless marked [AllowAnonymous]Velge bort med AllowAnonymous
Når en fallback-policy låser ned alt, kan De bruke [AllowAnonymous] til å eksponere offentlige endepunkter, for eksempel innlogging eller helsesjekker.
[AllowAnonymous]
[HttpGet("health")]
public IActionResult Health() => Ok("healthy");Bruke policyer på endepunkter
Referer til en policy med navn i attributter eller Minimal API-utvidelser.
// Controller
[Authorize(Policy = "SeniorEditor")]
public IActionResult Publish() => Ok();
// Minimal API
app.MapPost("/publish", () => Results.Ok())
.RequireAuthorization("SeniorEditor");Gruppere endepunkter
Bruk en policy på en hel rutegruppe, slik at alle endepunkter i gruppen arver den.
var admin = app.MapGroup("/admin")
.RequireAuthorization("CanManageOrders");
admin.MapGet("/stats", () => Results.Ok());
admin.MapDelete("/{id}", (int id) => Results.NoContent());Kravene under panseret
Hvert kall til Require* legger til en IAuthorizationRequirement i policyen. En samsvarende handler evaluerer hvert krav. For innebygde krav skjer dette automatisk; egendefinerte regler trenger en egendefinert handler (neste leksjon).
// RequireRole("admin") adds a RolesAuthorizationRequirement
// RequireClaim(...) adds a ClaimsAuthorizationRequirementHvor bør policyer defineres
Samle alle policydefinisjoner i én utvidelsesmetode, slik at de er lette å finne og teste.
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;
}Kunnskapssjekk
Test forståelsen Deres av standardpolicyer kontra fallback-policyer.
Oppsummering
De har lært om policy-basert autorisasjon:
AddPolicydefinerer navngitte, gjenbrukbare regler.RequireAuthenticatedUser,RequireRoleogRequireClaimkombineres med OG-semantikk.- DefaultPolicy brukes av enkel
[Authorize]; FallbackPolicy sikrer endepunkter uten eksplisitt merking. [AllowAnonymous]velger bort autorisasjon.
Neste: egendefinerte autorisasjonskrav og handlere.
Lær deg C# med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 93
- Leksjoner
- 346
Ofte stilte spørsmål
Er leksjonen «Policybasert autorisasjon» gratis?
Ja – hele teksten i «Policybasert autorisasjon» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av C# Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i C# Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Policybasert autorisasjon»?
Definer gjenbrukbare autorisasjonspolicyer. Du øver på C# Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med C# Academy?
Ingen tidligere erfaring er nødvendig. C# Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Policybasert autorisasjon»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne C# Academy-leksjonen?
Ja. Alle C# Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Rollebasert autorisasjon
- Claims-basert autorisasjon
- Policybasert autorisasjon
- Egendefinerte autorisasjonskrav