PHP Academy · Les

Gates: eenvoudige autorisatiecontroles

Definieer en evalueer gates voor logica rond gebruikersrechten voor acties.

Les 3 van 413 stappen

Gates: eenvoudige autorisatiecontroles is een gratis PHP Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject PHP Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus PHP Academy bevat in totaal 4 lessen.

Wat zijn Gates?

Laravel Gates zijn closures die bepalen of een gebruiker een bepaalde actie mag uitvoeren. Het zijn eenvoudige, globale autorisatiecontroles die niet aan een specifiek model zijn gekoppeld.

Een Gate definiëren

Definieer Gates in App\Providers\AppServiceProvider of in een speciale AuthServiceProvider met de Gate-facade.

<?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;
});

Een Gate controleren (toestaan/weigeren)

Controleer Gate-resultaten met Gate::allows() of Gate::denies().

<?php
if (Gate::allows("delete-post", $post)) {
    $post->delete();
}

if (Gate::denies("delete-post", $post)) {
    abort(403);
}

authorize() in controllers

Roep $this->authorize() aan binnen een controller — bij mislukking wordt automatisch AuthorizationException (403) gegenereerd.

<?php
public function destroy(Post $post): RedirectResponse
{
    $this->authorize("delete-post", $post);
    $post->delete();
    return redirect()->route("posts.index");
}

@can in Blade

Gebruik de @can-directive om de gebruikersinterface voorwaardelijk weer te geven op basis van Gate-controles.

@can('delete-post', $post)
    <form method="POST" action="/posts/{{ $post->id }}">
        @csrf @method('DELETE')
        <button>Delete</button>
    </form>
@endcan

Gate::before

De before-callback wordt uitgevoerd vóór alle andere Gate-controles — handig om beheerders volledige toegang te geven.

<?php
Gate::before(function (User $user, string $ability) {
    if ($user->isAdmin()) return true; // skip further checks
});

Gate::after

after wordt uitgevoerd na alle Gate-controles. Een retourwaarde die niet null is, overschrijft het resultaat van de Gate.

Antwoorden retourneren

Gates kunnen een Response-object retourneren voor aangepaste foutmeldingen.

<?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()

Controleer een Gate voor een andere gebruiker (niet voor de geauthenticeerde gebruiker).

<?php
if (Gate::forUser($otherUser)->allows("delete-post", $post)) {
    // ...
}

Gastgebruikers

Standaard retourneren Gates automatisch false voor niet-geauthenticeerde gebruikers. Geef de gebruiker een nullable typehint om controles voor gasten toe te staan.

<?php
Gate::define("view-post", function (?User $user, Post $post) {
    return $post->is_published || $user?->id === $post->user_id;
});

Gates versus Policies

Gates zijn eenvoudige closures voor ad-hoccontroles. Policies zijn klassen voor modelgebaseerde autorisatie — gebruik policies wanneer je meerdere acties op hetzelfde model hebt.

Samenvatting

Gates zijn globale closures voor autorisatie. Definieer ze in een serviceprovider. Controleer ze met Gate::allows(), $this->authorize() of @can in Blade.

Snel controleren

Welke methode van een controller genereert automatisch 403 wanneer een Gate mislukt?

Gratis beginnen

Leer PHP met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
49
Lessen
195

Veelgestelde vragen

Is de les “Gates: eenvoudige autorisatiecontroles” gratis?

Ja — de volledige tekst van “Gates: eenvoudige autorisatiecontroles” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus PHP Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus PHP Academy bevat in totaal 4 lessen.

Wat leer ik in “Gates: eenvoudige autorisatiecontroles”?

Definieer en evalueer gates voor logica rond gebruikersrechten voor acties. Je oefent met PHP Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met PHP Academy te beginnen?

Ervaring vooraf is niet nodig. PHP Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Gates: eenvoudige autorisatiecontroles”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over PHP Academy?

Ja. Elke les over PHP Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Authenticatie met Laravel Breeze
  2. Routes beveiligen met middleware
  3. Gates: eenvoudige autorisatiecontroles
  4. Policies: modelgebaseerde autorisatie
← Terug naar PHP Academy