Heim PHP-Framework Laravel So implementieren Sie rollenbasierten dynamischen Berechtigungswechsel in Laravel

So implementieren Sie rollenbasierten dynamischen Berechtigungswechsel in Laravel

Nov 04, 2023 pm 12:58 PM
laravel 动态切换 Rollenberechtigungen

So implementieren Sie rollenbasierten dynamischen Berechtigungswechsel in Laravel

Laravel ist ein beliebtes Framework für die Entwicklung von Webanwendungen, das auf der PHP-Sprache basiert. Es verfügt über viele hervorragende Funktionen, die es Programmierern ermöglichen, schnell hochwertige Webanwendungen zu erstellen. Dazu gehört der Einsatz von Middleware zur Implementierung wichtiger Funktionen wie Authentifizierung und Berechtigungskontrolle. In diesem Artikel untersuchen wir, wie man rollenbasierten dynamischen Berechtigungswechsel in Laravel implementiert, und stellen gleichzeitig spezifische Codebeispiele bereit.

Was ist rollenbasierter dynamischer Berechtigungswechsel?

Dynamischer Berechtigungswechsel basierend auf Rollen ist ein gängiger Berechtigungskontrollmodus. In diesem Modell stellen Benutzerrollen im System eine Reihe von Betriebsberechtigungen dar. Nach der Anmeldung werden den Benutzern entsprechend ihrer Rollen entsprechende Berechtigungen zugewiesen. Während der Benutzer das System nutzt, kann der Systemadministrator im Hintergrund die Rolle des Benutzers ändern und damit die Bedienberechtigungen des Benutzers ändern.

Implementieren des rollenbasierten dynamischen Berechtigungswechsels in Laravel

Laravel bietet viele hervorragende Funktionen zum Implementieren des rollenbasierten dynamischen Berechtigungswechsels. Im Folgenden werden wir Schritt für Schritt ein einfaches Beispiel implementieren. Anhand dieses Beispiels können Sie besser verstehen, wie Sie den rollenbasierten dynamischen Berechtigungswechsel in Laravel implementieren.

Schritt 1: Datenbank und Benutzertabelle erstellen

Erstellen wir zunächst eine Datenbank und eine Benutzertabelle. Die Benutzertabelle umfasst ID, Benutzername, E-Mail, Passwort, Rollen-ID, Erstellungszeit und Aktualisierungszeit.

Schritt 2: Definieren Sie das Benutzermodell

Als nächstes müssen wir das entsprechende Benutzermodell definieren. In Laravel können Sie den Artisan-Befehl verwenden, um ein Modell zu erstellen:

php artisan make:model User
Nach dem Login kopieren

Dann können wir eine GehörtTo()-Methode definieren, die das Rollenmodell im generierten Benutzermodell zuordnet. Das Codebeispiel lautet wie folgt:

class User extends Model
{
    public function role()
    {
        return $this->belongsTo('AppRole');
    }
}
Nach dem Login kopieren

Schritt 3 : Erstellen Sie die Rollentabelle und das Rollenmodell.

Erstellen Sie ein Charakterblatt und ein Charaktermodell. Die Rollentabelle enthält zwei Felder: ID und Rollenname.

Schritt 4: Definieren Sie die Beziehung zwischen Rollenmodellen

Im Rollenmodell können wir die Berechtigungen definieren, die diese Rolle hat. Sie können die Methode „gehörtToMany()“ verwenden, mit der eine Viele-zu-Viele-Beziehung zwischen Rollen und Berechtigungen hergestellt werden kann. Das Codebeispiel lautet wie folgt:

class Role extends Model
{
    public function permissions()
    {
        return $this->belongsToMany('AppPermission', 'permission_role');
    }
}
Nach dem Login kopieren

Schritt 5: Berechtigungstabelle und Berechtigungsmodell erstellen

Erstellen Sie eine Berechtigungstabelle und ein Berechtigungsmodell. Die Berechtigungstabelle enthält zwei Felder: ID und Berechtigungsname.

Schritt 6: Definieren Sie die Beziehung zwischen Berechtigungsmodellen

Im Berechtigungsmodell können wir die Beziehung zwischen Rollen und Berechtigungen definieren. Sie können die Methode „gehörtToMany()“ verwenden, mit der eine Viele-zu-Viele-Beziehung zwischen Rollen und Berechtigungen hergestellt werden kann. Der Beispielcode lautet wie folgt:

class Permission extends Model
{
    public function roles()
    {
        return $this->belongsToMany('AppRole', 'permission_role');
    }
}
Nach dem Login kopieren

Schritt 7: Middleware definieren

In Laravel wird Middleware zur Verarbeitung von Anfragen und Antworten verwendet, einschließlich Authentifizierung und Autorisierung. Wir können eine Middleware definieren, um zu prüfen, ob der Benutzer die Berechtigung hat, den angeforderten Vorgang auszuführen. Das Codebeispiel lautet wie folgt:

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesAuth;

class CheckPermission
{
    public function handle($request, Closure $next,$permissions)
    {
        $sessionUser = Auth::user();

        foreach($sessionUser->role()->get() as $role)
        {
            $role_permissions = $role->permissions()->pluck('name')->toArray();
            foreach($permissions as $perm)
            {
                if (in_array($perm, $role_permissions)) {
                    return $next($request);
                } 
            }
        }
        return redirect('/login');
    }
}
Nach dem Login kopieren

Im obigen Code rufen wir zunächst die Benutzerinformationen aus der Sitzung ab und geben die Berechtigungen der entsprechenden Rolle über die Rolle des Benutzers zurück. Die Variable $permissions enthält die Berechtigungen, die gesteuert werden müssen . Wenn der Benutzer über die entsprechende Berechtigung verfügt, wird die Ausführung fortgesetzt. Andernfalls leiten Sie zur Anmeldeseite weiter.

Schritt 8: Middleware verwenden

Wir können die Middleware CheckPermission in der Route definieren, um Benutzer von der Nutzung bestimmter Routen auszuschließen. Das Codebeispiel lautet wie folgt:

Route::get('admin/dashboard',['middleware'=>['permission'],'uses'=>'AdminController@dashboard']);
Nach dem Login kopieren

Im Controller können wir wie folgt überprüfen, ob der Benutzer die Berechtigung zur Verwendung dieser Route hat:

class AdminController extends Controller
{
    public function dashboard()
    {
        $this->middleware('check-permission:user-list');
        return view('admin.index');
    }
}
Nach dem Login kopieren

Nachdem Sie im Browser auf die Route zugegriffen haben, rufen Sie die Rolle und Berechtigungen des aktuellen Benutzers in der Sitzung ab . Wenn der Benutzer über die entsprechende Berechtigung verfügt, wird die Ausführung fortgesetzt.

Fazit

In diesem Artikel haben wir besprochen, wie man rollenbasierten dynamischen Berechtigungswechsel in Laravel implementiert. Die Implementierung der Berechtigungskontrolle über Middleware ist eine sehr gängige Methode. Bitte achten Sie bei der Implementierung darauf, dass Ihr System über ein vollständiges Rollenmanagement verfügt und eine Viele-zu-Viele-Beziehung zwischen Rollen und Berechtigungen besteht. Nur so können in Laravel sehr leistungsfähige Authentifizierungs- und Autorisierungsfunktionen implementiert werden.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie rollenbasierten dynamischen Berechtigungswechsel in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Laravel – Handwerkerbefehle Laravel – Handwerkerbefehle Aug 27, 2024 am 10:51 AM

Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

Laravel – Paginierungsanpassungen Laravel – Paginierungsanpassungen Aug 27, 2024 am 10:51 AM

Laravel – Paginierungsanpassungen – Laravel enthält eine Paginierungsfunktion, die einem Benutzer oder Entwickler hilft, eine Paginierungsfunktion einzubinden. Der Laravel-Paginator ist in den Abfrage-Builder und Eloquent ORM integriert. Die Paginierungsmethode automatisch

Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Apr 01, 2025 pm 02:45 PM

Methode zum Abholen des Rücksendecode, wenn das Senden von Laravel -E -Mails fehlschlägt. Wenn Sie Laravel zur Entwicklung von Anwendungen verwenden, stellen Sie häufig Situationen auf, in denen Sie Überprüfungscodes senden müssen. Und in Wirklichkeit ...

Laravel -Zeitplanaufgabe wird nicht ausgeführt: Was soll ich tun, wenn die Aufgabe nicht nach Zeitplan ausgeführt wird: Befehl ausführen? Laravel -Zeitplanaufgabe wird nicht ausgeführt: Was soll ich tun, wenn die Aufgabe nicht nach Zeitplan ausgeführt wird: Befehl ausführen? Mar 31, 2025 pm 11:24 PM

Laravel -Zeitplan -Aufgabe Ausführen nicht reagierende Fehlerbehebung Bei Verwendung der Zeitplanung von Laravel -Zeitplänen werden viele Entwickler auf dieses Problem stoßen: Zeitplan: Run ...

Wie kann man in Laravel mit der Situation umgehen, in der Überprüfungscodes nicht per E -Mail gesendet werden? Wie kann man in Laravel mit der Situation umgehen, in der Überprüfungscodes nicht per E -Mail gesendet werden? Mar 31, 2025 pm 11:48 PM

Die Methode zum Umgang mit Laravels E -Mail -Versagen zum Senden von Verifizierungscode besteht darin, Laravel zu verwenden ...

So implementieren Sie die benutzerdefinierte Tabellenfunktion des Klickens, um Daten im DCAT -Administrator hinzuzufügen? So implementieren Sie die benutzerdefinierte Tabellenfunktion des Klickens, um Daten im DCAT -Administrator hinzuzufügen? Apr 01, 2025 am 07:09 AM

So implementieren Sie die Tabellenfunktion von benutzerdefiniertem Klicken, um Daten in dcatadmin (laravel-admin) hinzuzufügen, wenn Sie DCAT verwenden ...

Laravel – Dump-Server Laravel – Dump-Server Aug 27, 2024 am 10:51 AM

Laravel – Dump-Server – Der Laravel-Dump-Server wird mit der Version von Laravel 5.7 geliefert. Die Vorgängerversionen enthalten keinen Dump-Server. Der Dump-Server wird eine Entwicklungsabhängigkeit in der Laravel-/Laravel-Composer-Datei sein.

Laravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus? Laravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus? Apr 01, 2025 am 07:45 AM

Die Auswirkungen des Austauschs von Redis -Verbindungen im Laravel -Framework und der Auswahl von Methoden bei Verwendung von Laravel -Framework und Redis können Entwickler auf ein Problem stoßen: Durch Konfiguration ...

See all articles