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.
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.
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; }
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.
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(); } }
Im obigen Code ordnet die Variable $policies das Post-Modell der PostPolicy-Klasse zu und registriert dann die Richtlinienklasse in der Gate::policy-Methode.
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')); }
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!