Gates: Enkle autorisasjonskontroller
Definer og evaluer gates for logikk som styrer brukertillatelser.
Gates: Enkle autorisasjonskontroller er en gratis leksjon i PHP 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 PHP Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i PHP Academy inneholder totalt 4 leksjoner.
Hva er Gates?
Laravel-Gates er closures som avgjør om en bruker har tillatelse til å utføre en bestemt handling. De er enkle, globale autorisasjonskontroller som ikke er knyttet til en bestemt modell.
Definere en Gate
Definer gates i App\Providers\AppServiceProvider eller i en dedikert AuthServiceProvider ved å bruke Gate-fasaden.
<?php
use Illuminate\Support\Facades\Gate;
// In a service provider's boot() method:
Gate::define("delete-post", function (User $user, Post $post) {
return $user->id === $post->user_id;
});Kontrollere en Gate (tillater/avslår)
Kontroller resultatet fra en gate med Gate::allows() eller Gate::denies().
<?php
if (Gate::allows("delete-post", $post)) {
$post->delete();
}
if (Gate::denies("delete-post", $post)) {
abort(403);
}authorize() i kontrollere
Kall $this->authorize() i en kontroller – ved feil kastes AuthorizationException (403) automatisk.
<?php
public function destroy(Post $post): RedirectResponse
{
$this->authorize("delete-post", $post);
$post->delete();
return redirect()->route("posts.index");
}@can i Blade
Bruk @can-direktivet for å vise brukergrensesnitt betinget av resultatet fra en gate-kontroll.
@can('delete-post', $post)
<form method="POST" action="/posts/{{ $post->id }}">
@csrf @method('DELETE')
<button>Delete</button>
</form>
@endcanGate::before
before-tilbakekallet kjører før alle andre gate-kontroller – nyttig for å gi administratorer full tilgang.
<?php
Gate::before(function (User $user, string $ability) {
if ($user->isAdmin()) return true; // skip further checks
});Gate::after
after kjører etter alle gate-kontroller. En returverdi som ikke er null, overstyrer resultatet fra gaten.
Returnere svar
Gates kan returnere et Response-objekt med egendefinerte feilmeldinger.
<?php
Gate::define("publish-post", function (User $user, Post $post) {
return $user->isEditor()
? Response::allow()
: Response::deny("You must be an editor to publish.");
});forUser()
Kontroller en gate for en annen bruker enn den autentiserte.
<?php
if (Gate::forUser($otherUser)->allows("delete-post", $post)) {
// ...
}Gjestebrukere
Som standard returnerer gates automatisk false for uautentiserte brukere. Angi brukeren som nullable med en typehint for å tillate kontroller av gjestebrukere.
<?php
Gate::define("view-post", function (?User $user, Post $post) {
return $post->is_published || $user?->id === $post->user_id;
});Gates kontra policies
Gates er enkle closures for ad hoc-kontroller. Policies er klasser for modellbasert autorisasjon – bruk policies når du har flere handlinger på samme modell.
Sammendrag
Gates er globale closures for autorisasjon. Definer dem i en service provider. Kontroller dem med Gate::allows(), $this->authorize() eller @can i Blade.
Hurtigsjekk
Hvilken kontroller-metode kaster automatisk 403 når en gate-kontroll mislykkes?
Lær deg PHP 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
- 49
- Leksjoner
- 195
Ofte stilte spørsmål
Er leksjonen «Gates: Enkle autorisasjonskontroller» gratis?
Ja – hele teksten i «Gates: Enkle autorisasjonskontroller» 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 PHP Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i PHP Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Gates: Enkle autorisasjonskontroller»?
Definer og evaluer gates for logikk som styrer brukertillatelser. Du øver på PHP 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 PHP Academy?
Ingen tidligere erfaring er nødvendig. PHP 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 «Gates: Enkle autorisasjonskontroller»?
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 PHP Academy-leksjonen?
Ja. Alle PHP 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
- Autentisering med Laravel Breeze
- Beskytte ruter med middleware
- Gates: Enkle autorisasjonskontroller
- Policies: Modellbasert autorisasjon