


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
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'); } }
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'); } }
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'); } }
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'); } }
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']);
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'); } }
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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 -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 ...

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

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

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.

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 ...
