Dieser Artikel stellt hauptsächlich die Laravel-Berechtigungskontroll-Gate-Richtlinie vor, die einen gewissen Referenzwert hat. Jetzt kann ich sie mit allen Freunden teilen, die sie benötigen.
Über Berechtigungen
Im Wesentlichen beschreibt es die Beurteilung, ob die Produktion auf der Grundlage einer ausführbaren logischen Einheit gestartet werden soll.
Definition Es muss eine Benutzerinstanz oder einen eindeutigen Identifikationsparameter und die damit verbundene Nutzungsressource vorhanden sein. Normalerweise wird ein Abschluss oder eine Funktion oder Methode
verwendet, um das Handle der logischen Berechtigungseinheit, das Parameterberechtigungsoperationsobjekt und die Benutzerinformationen aufzurufen.
Origin
Die grundlegendste Berechtigungskontrolle, ternärer Operator? :. Offensichtlich bedingte Beurteilung, dann springen Sie zur entsprechenden Ausführungslogik.
Laravels Idee besteht darin, Ausführungslogik (Produktionscode) und Autorisierung (bedingte Beurteilungslogik) zu trennen. Konzentrieren Sie sich auf die Generierung von Bedingungen und stärken Sie im Allgemeinen die Autorisierungslogik (dies ist bei komplexen Autorisierungen sehr nützlich). Postulat: Alle Codes werden gestartet, nachdem die Dienstregistrierung abgeschlossen ist. Daher wird der folgende Code registriert. Sein Zweck besteht darin, den logischen Körper zu finden, der wirklich ein Urteil ermöglicht.
Gate::define('update articles', 'ArticlePolicy@update')
Der erste Parameter ist offensichtlich nur eine Autorisierungskennung (der Handle-Parameter, der zum Aufrufen verwendet wird), und der zweite Parameter ist der autorisierte logische Ausführungskörper.
Laravel-Autorisierungsdefinition
Autorisierung in der AuthServiceProvider
-Methode von boot
Gate::define('update articles', function ($user, $article) { return $user->id == $article->user_id; }); Gate::define('update articles', 'ArticlePolicy@edit');
<?php namespace App\Policies; use App\User; use App\Models\Article; class ArticlePolicy { public function update(User $user, Article $article) { return $user->id == $article->author_id; } }
Laravel genehmigt die Verwendung von
und Gate::allows('update articles', $article)
. Gate::denies('update articles', $article)
Merkmal ein AuthorizesRequests
. $this->authorize('update articles', $article)
- und @can('update articles', $article)
-Anweisungen. @cannot('update articles', $article)
und $user->can('update articles', $article)
. $user->cannot('update articles', $article)
Laravel-Richtlinie
Array-Attribut von AuthServiceProvider
policies
/** * The policy mappings for the application. * * @var array */ protected $policies = [ Article::class => ArticlePolicy::class, ];
<?php namespace App\Policies; use App\User; use App\Models\Article; use Illuminate\Auth\Access\HandlesAuthorization; class ArticlePolicy { use HandlesAuthorization; public function create(User $user) { return true; } public function delete(User $user, Article $article) { return $user->id == $article->author_id; } public function before($user, $ability) { if($user->isSuperAdmin()){ return true; } } }
Hinweis:
Policy is only im Normalfall verwendet Ein-Merkmal wird der PHP-Klasse hinzugefügt. HandlesAuthorization
Wie Laravel gulp verwendet, um Front-End-Ressourcen zu erstellen
Das obige ist der detaillierte Inhalt vonLaravel-Berechtigungskontroll-Gate-Richtlinie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!