Heim >PHP-Framework >Laravel >Laravel-Entwicklung: Wie kontrolliere ich den Zugriff mithilfe der Laravel-Autorisierung?

Laravel-Entwicklung: Wie kontrolliere ich den Zugriff mithilfe der Laravel-Autorisierung?

王林
王林Original
2023-06-13 23:22:121307Durchsuche

Laravel-Entwicklung: Wie verwende ich die Laravel-Autorisierung, um den Zugriff zu kontrollieren?

Laravel ist ein beliebtes PHP-Webanwendungs-Framework, das viele hervorragende Funktionen und Komponenten bietet, die uns helfen können, schnell hochwertige Webanwendungen zu entwickeln. Eine davon ist die Laravel-Autorisierung, eine sehr nützliche Funktion in Laravel, die uns dabei helfen kann, den Zugriff auf bestimmte sensible Vorgänge und Seiten in Webanwendungen zu kontrollieren.

Was ist eine Laravel-Autorisierung?

Die Laravel-Autorisierung ist Teil des Laravel-Frameworks, das eine Reihe von APIs und Funktionen bereitstellt, die uns bei der Steuerung von Benutzerberechtigungen und der Zugriffskontrolle in Webanwendungen helfen können. Mithilfe der Laravel-Autorisierung können wir Benutzerrollen und Berechtigungen einfach definieren und verwalten, um sensible Daten und Vorgänge in Webanwendungen zu schützen.

Wie verwende ich die Laravel-Autorisierung?

Mit der Laravel-Autorisierung müssen wir die folgenden Schritte ausführen:

  1. Benutzerrollen und -berechtigungen definieren

Zuerst müssen wir Benutzerrollen und -berechtigungen definieren. Eine Benutzerrolle ist eine Reihe von Zugriffsrechten, die den Zugriff eines Benutzers auf bestimmte Inhalte basierend auf seiner Rolle einschränkt. Beispielsweise können wir zwei Rollen definieren: „Administrator“ und „Normaler Benutzer“. Administratoren können auf alle Seiten und Vorgänge zugreifen, während normale Benutzer nur auf einige eingeschränkte Seiten und Vorgänge zugreifen können.

In Laravel können wir die Autorisierungsrichtlinie (Richtlinie) von Laravel verwenden, um Benutzerrollen und Berechtigungen zu definieren. Die Autorisierungsrichtlinie ist eine Klasse, die Autorisierungsregeln definiert. Sie enthält eine Reihe von Regeln, die Benutzern den Zugriff auf bestimmte Ressourcen erlauben oder verweigern. Wir können für jedes Modell eine Autorisierungsrichtlinie definieren und diese dann im Controller verwenden, um Benutzerberechtigungen zu überprüfen.

Das Folgende ist ein einfaches Beispiel für eine Autorisierungsrichtlinie, um den Zugriff des Benutzers „admin“ auf bestimmte Ressourcen zu beschränken:

<?php

namespace AppPolicies;

use AppUser;
use IlluminateAuthAccessHandlesAuthorization;

class PostPolicy
{
    use HandlesAuthorization;

    public function before($user, $ability)
    {
        if ($user->role === 'admin') {
            return true;
        }
    }

    public function update(User $user, Post $post)
    {
        return $user->id === $post->user_id;
    }
}

Im obigen Beispielcode haben wir eine Autorisierungsrichtlinie namens PostPolicy definiert. In der Autorisierungsrichtlinie definieren wir zunächst eine Vorher-Methode. In dieser Methode ermitteln wir, ob der aktuelle Benutzer ein „Administrator“ ist. Wenn ja, geben wir direkt true zurück, andernfalls führen wir weiterhin andere Überprüfungsregeln aus.

Dann definieren wir eine Update-Methode. In dieser Methode ermitteln wir, ob der aktuelle Benutzer der Autor des Artikels ist. Wenn ja, geben wir true zurück, andernfalls geben wir false zurück, was angibt, dass der aktuelle Benutzer nicht über die Berechtigung zum Aktualisieren verfügt Artikel.

  1. Autorisierungsrichtlinie im Controller verwenden

Nachdem wir die Autorisierungsrichtlinie definiert haben, müssen wir sie im Controller verwenden. Die Verwendung der Autorisierungsfunktion in Laravel ist sehr einfach. Verwenden Sie einfach die Autorisierungsmethode im Controller. Die Autorisierungsmethode kann zwei Parameter akzeptieren. Der erste Parameter ist der Name der zu verwendenden Autorisierungsrichtlinie und der zweite Parameter ist die zu überprüfende Ressource.

Das Folgende ist ein Beispiel-Controller-Code, um zu überprüfen, ob der Benutzer die Berechtigung zum Aktualisieren des Artikels hat:

<?php

namespace AppHttpControllers;

use AppPost;
use IlluminateHttpRequest;

class PostController extends Controller
{
    public function update(Request $request, Post $post)
    {
        $this->authorize('update', $post);

        // 用户有权限更新文章,继续执行下面的代码...
    }
}

Im obigen Beispiel haben wir die Autorisierungsmethode verwendet, um zu überprüfen, ob der Benutzer die Berechtigung zum Aktualisieren des Artikels hat. Wenn die Autorisierung erfolgreich ist, führt der Controller-Code weiterhin die folgende Logik aus, andernfalls wird eine Ausnahme ausgelöst.

  1. Autorisierungsrichtlinien in Blade-Vorlagen verwenden

Zusätzlich zur Verwendung von Autorisierungsrichtlinien in Controllern können wir auch Autorisierungsrichtlinien in Blade-Vorlagen verwenden. Die Verwendung von Autorisierungsrichtlinien in Vorlagen ist sehr einfach. Verwenden Sie einfach die Anweisungen @can und @cannot.

Hier ist ein Beispielcode für eine Blade-Vorlage zum Anzeigen verschiedener Inhalte basierend auf der Benutzerrolle:

@if (auth()->user()->can('update', $post))
    <a href="{{ route('posts.edit', $post) }}">编辑文章</a>
@endif

Im obigen Beispiel haben wir die @can-Direktive verwendet, um den Link „Artikel bearbeiten“ basierend auf der Benutzerrolle anzuzeigen. Wenn der Benutzer die Berechtigung zum Aktualisieren des Artikels hat, wird der Link angezeigt, andernfalls wird er nicht angezeigt.

Zusammenfassung

Die Laravel-Autorisierung ist eine sehr nützliche Funktion des Laravel-Frameworks, die uns dabei helfen kann, Benutzerrollen und Zugriffsrechte einfach zu verwalten sowie sensible Daten und Vorgänge in Webanwendungen zu schützen. In diesem Artikel haben wir vorgestellt, wie Sie die Laravel-Autorisierung zur Steuerung von Zugriffsberechtigungen verwenden. Wir hoffen, dass dieser Artikel für Sie hilfreich ist.

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie kontrolliere ich den Zugriff mithilfe der Laravel-Autorisierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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