Die Implementierung von berechtigungsbasiertem dynamischem Routing und Seitensprüngen in Laravel kann uns dabei helfen, Benutzerzugriffsberechtigungen flexibler zu steuern und eine verfeinerte Berechtigungsverwaltung zu erreichen. Im Folgenden kombiniert der Autor tatsächliche Codebeispiele, um detailliert vorzustellen, wie erlaubnisbasiertes dynamisches Routing und Seitensprünge in Laravel implementiert werden.
Die Berechtigungskontrolle in Laravel wird normalerweise mithilfe von Middleware implementiert, und dynamisches Routing und Seitensprünge basierend auf Berechtigungen werden ebenfalls mithilfe von Middleware implementiert. Insbesondere können wir beim Definieren der Route Middleware hinzufügen und dann mithilfe der Middleware feststellen, ob der Benutzer über die Berechtigung zum Zugriff auf die Route verfügt. Andernfalls wird der Benutzer zur Seite mit der Aufforderung zum nicht autorisierten Zugriff oder zu anderen angegebenen Seiten weitergeleitet.
(1) Erstellen Sie eine Route
Zuerst müssen wir die Routen definieren, die eine Berechtigungskontrolle in der Route erfordern. Beim Definieren einer Route können Sie die Middleware-Methode verwenden, um die Middleware anzugeben, wie unten gezeigt:
Route::get('/admin/user/index', 'UserController@index')->middleware('permission:user-index');
Unter diesen bedeutet „permission:user-index“, dass die Middleware mit dem Namen „permission“ für die Berechtigungsbeurteilung verwendet wird. Hier legen wir über „user-index“ die benötigten Berechtigungen fest. Dieser „Benutzerindex“ kann entsprechend der tatsächlichen Situation als andere Berechtigungsnamen definiert werden.
(2) Middleware erstellen
Als nächstes müssen wir Middleware für die Berechtigungsbeurteilung und den Seitensprung erstellen. In Laravel können Sie den Befehl php artisan make:middleware verwenden, um Middleware zu erstellen, wie unten gezeigt:
php artisan make:middleware PermissionMiddleware
Nach Abschluss der Ausführung wird die Datei PermissionMiddleware.php im Verzeichnis app/Http/Middleware generiert.
(3) Middleware-Logik schreiben
In der Datei app/Http/Middleware/PermissionMiddleware.php müssen wir den Logikcode der Middleware schreiben. In diesem Beispiel können wir die Auth-Fassade von Laravel verwenden und sie mit unserem eigenen Berechtigungssystem kombinieren, um zu bestimmen, ob der Benutzer die Berechtigung zum Zugriff auf die Route hat.
<?php namespace AppHttpMiddleware; use Closure; use IlluminateSupportFacadesAuth; class PermissionMiddleware { public function handle($request, Closure $next, $permission) { // 获取当前用户 $user = auth()->user(); // 判断是否有权限访问 if (!$user->can($permission)) { // 无权限访问,进行跳转 abort(404); } // 有权限访问,继续执行 return $next($request); } }
Unter diesen ist der Parameter $permission der in der Routendefinition übergebene Berechtigungsname, mit dem ermittelt werden kann, ob der aktuelle Benutzer über die Berechtigung zum Zugriff auf die Route verfügt. Wenn keine Berechtigung vorliegt, können wir zum Springen die Abbruchfunktion verwenden. Hier verwenden wir abort(404), um zur 404-Seite zu springen. Sie können es auch entsprechend der tatsächlichen Situation ändern.
(4) Middleware registrieren
Bevor wir Middleware verwenden, müssen wir die Middleware in der Laravel-Anwendung registrieren. In der Datei app/Http/Kernel.php finden Sie das Attribut $middlewareGroups und das Attribut $routeMiddleware. Wir können Middleware separat in diesen beiden Eigenschaften registrieren.
Gebunden an die $middlewareGroups-Eigenschaft:
'web' => [ // ... AppHttpMiddlewarePermissionMiddleware::class, ],
Gebunden an die $routeMiddleware-Eigenschaft:
'permission' => AppHttpMiddlewarePermissionMiddleware::class,
Hier binden wir PermissionMiddleware an die „Web“-Middleware-Gruppe, was bedeutet, dass die Middleware in allen Web-Routing-Anfragen implementiert wird.
(5) Test
Nach Abschluss der oben genannten Schritte können wir testen. Während dieses Tests können wir die entsprechende Rolle in der Datenbank manuell autorisieren und dann auf die entsprechende URL zugreifen, um zu sehen, ob wir über Zugriffsrechte verfügen. Ich werde hier nicht auf Details eingehen.
Durch die oben genannten Schritte können wir berechtigungsbasiertes dynamisches Routing und Seitensprung in Laravel implementieren. Durch den Einsatz von Middleware können wir unser eigenes Berechtigungssystem verwenden, um Benutzerzugriffsberechtigungen flexibel zu steuern und eine verfeinerte Berechtigungsverwaltung zu erreichen.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie berechtigungsbasiertes dynamisches Routing und Seitensprung in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!