Heim > PHP-Framework > Laravel > Hauptteil

So implementieren Sie berechtigungsbasierte Datenfilterung und Zugriffsbeschränkungen in Laravel

WBOY
Freigeben: 2023-11-02 17:40:50
Original
997 Leute haben es durchsucht

So implementieren Sie berechtigungsbasierte Datenfilterung und Zugriffsbeschränkungen in Laravel

Laravel ist ein hervorragendes PHP-Framework, das leistungsstarke Authentifizierungs- und Autorisierungstools bietet, um auf einfache Weise berechtigungsbasierte Datenfilterung und Zugriffsbeschränkungen in Anwendungen zu implementieren.

Dieser Artikel zeigt, wie Richtlinien (Policy) in Laravel für berechtigungsbasierte Datenfilterung und Zugriffsbeschränkungen verwendet werden, und stellt spezifische Codebeispiele bereit.

  1. Erstellen Sie eine Strategieklasse

In Laravel können Sie die Befehlszeile verwenden, um schnell eine Strategieklasse zu generieren. Geben Sie im Terminal den folgenden Befehl ein:

php artisan make:policy PostPolicy

Dieser Befehl generiert eine Richtlinienklasse mit dem Namen PostPolicy.

  1. Definieren Sie die Richtlinienmethode

Als nächstes definieren Sie die Richtlinienmethode in der PostPolicy-Klasse. Wenn Sie beispielsweise nur Administratoren und Beitragsautoren die Bearbeitung von Beiträgen verbieten müssen, können Sie der PostPolicy-Klasse die folgende Methode hinzufügen:

public function update(User $user, Post $post)
{
    return $user->isAdmin() || $user->id === $post->user_id;
}
Nach dem Login kopieren

Die obige Methode verwendet das von Laravel bereitgestellte Benutzermodell und das Beitragsmodell, wobei $user das ist aktueller Benutzer und $post ist der aktuelle Beitrag. Diese Methode gibt „true“ zurück, wenn der aktuelle Benutzer ein Administrator oder der aktuelle Benutzer der Autor des Beitrags ist, andernfalls gibt sie „false“ zurück.

  1. Strategieklasse registrieren

Als nächstes müssen Sie die Strategieklasse in AppServiceProvider registrieren. Fügen Sie der Boot-Methode den folgenden Code hinzu:

<?php

namespace AppProviders;

use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;
use IlluminateSupportFacadesGate;
use AppPoliciesPostPolicy;
use AppPost;

class AuthServiceProvider extends ServiceProvider
{
    protected $policies = [
        Post::class => PostPolicy::class,
    ];

    public function boot()
    {
        $this->registerPolicies();
    }
}
Nach dem Login kopieren

Im obigen Code ordnet die Variable $policies das Post-Modell der PostPolicy-Klasse zu und registriert dann die Richtlinienklasse in der Gate::policy-Methode.

  1. Verwenden Sie Richtlinienklassen für Datenfilterung und Zugriffsbeschränkungen.

Schließlich können Sie Richtlinienklassen im Controller für Datenfilterung und Zugriffsbeschränkungen verwenden. Zum Beispiel im Post-Editing-Controller:

public function edit(Post $post)
{
    $this->authorize('update', $post);

    return view('posts.edit', compact('post'));
}
Nach dem Login kopieren

Im obigen Code wird die Autorisierungsmethode verwendet, um zu überprüfen, ob der aktuelle Benutzer die Berechtigung zum Aktualisieren des Beitrags hat. Wenn der Benutzer über die Berechtigung verfügt, kehren Sie zur Bearbeitungsseite zurück. Andernfalls wird eine 403-HTTP-Ausnahme ausgelöst.

Zusammenfassend lässt sich sagen, dass durch die Verwendung von Richtlinienklassen auf einfache Weise berechtigungsbasierte Datenfilterung und Zugriffsbeschränkungen in Laravel implementiert werden können, wodurch die Sicherheit und Zuverlässigkeit des Systems erhöht wird.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie berechtigungsbasierte Datenfilterung und Zugriffsbeschränkungen in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage