Heim > Backend-Entwicklung > PHP-Tutorial > Laravel-Berechtigungskontroll-Gate-Richtlinie

Laravel-Berechtigungskontroll-Gate-Richtlinie

不言
Freigeben: 2023-03-29 18:48:01
Original
2232 Leute haben es durchsucht

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')
Nach dem Login kopieren

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');
Nach dem Login kopieren
<?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;
    }
}
Nach dem Login kopieren
< definieren 🎜>

Laravel genehmigt die Verwendung von

  1. Torfassaden:

    und Gate::allows(&#39;update articles&#39;, $article). Gate::denies(&#39;update articles&#39;, $article)

  2. Controller führt

    Merkmal ein AuthorizesRequests

    . $this->authorize(&#39;update articles&#39;, $article)

  3. Blade-Vorlage:

    - und @can(&#39;update articles&#39;, $article)-Anweisungen. @cannot(&#39;update articles&#39;, $article)

  4. Benutzermodellinstanzen:

    und $user->can(&#39;update articles&#39;, $article). $user->cannot(&#39;update articles&#39;, $article)

Laravel-Richtlinie

Um die Autorisierung einfach zu definieren und zu verwenden, führt Laravel eine auf Gate basierende Richtlinie ein. Jede Methode innerhalb der Richtlinie wird mit der Beschreibung der Methode „gate::define“ registriert. Aus diesem Grund kann nach Verwendung der Richtlinienklassenregistrierung die Form von Gate::allow('Strategieklassenmethode') im Controller weiterhin zur Durchführung einer Autorisierungsbeurteilung verwendet werden, auch wenn die Autorisierungslogik nicht mit der Gate-Fassade definiert ist.


Definieren Sie zunächst die Berechtigungszuordnungsbeziehung im

Array-Attribut von AuthServiceProviderpolicies

/**
 * The policy mappings for the application.
 *
 * @var array
 */
protected $policies = [
    Article::class => ArticlePolicy::class,
];
Nach dem Login kopieren
<?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;
        }
    }
 }
Nach dem Login kopieren

Hinweis:

Policy is only im Normalfall verwendet Ein

-Merkmal wird der PHP-Klasse hinzugefügt. HandlesAuthorization

In Policy wird es aufgerufen, bevor alle Methoden ausgeführt werden. Es wird häufig zur Verwaltung der Administrator-Autorisierungslogik verwendet.


Verwandte Empfehlungen:

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!

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