


Erweiterte Implementierung der Laravel-Berechtigungsfunktion: So erreichen Sie die Isolierung mehrerer Mandanten
Erweiterte Implementierung der Laravel-Berechtigungsfunktion: Für die Implementierung der mehrinstanzenfähigen Berechtigungsisolierung sind spezifische Codebeispiele erforderlich.
Mit der rasanten Entwicklung des Internets stellen Unternehmen immer mehr Anforderungen an Online-Anwendungen. In diesen Anwendungen sind mandantenfähige Systeme zu einem gängigen Architekturmuster geworden. Multi-Tenant-Systeme ermöglichen es mehreren Mandanten (Unternehmen, Institutionen oder Einzelpersonen), eine Anwendung gemeinsam zu nutzen, ihre Daten und Vorgänge sind jedoch voneinander isoliert.
Berechtigungsisolation ist ein sehr wichtiges Thema bei der Verwendung des Laravel-Frameworks zur Entwicklung eines mandantenfähigen Systems. In diesem Artikel wird erläutert, wie die Berechtigungsisolierung in einem System mit mehreren Mandanten mithilfe der Berechtigungsfunktion von Laravel implementiert wird, und es werden spezifische Codebeispiele aufgeführt.
Zuerst müssen wir das Konzept der Mehrfachmieter definieren, das durch ein Mietermodell dargestellt werden kann. In Laravel können wir dazu Eloquent-Modelle verwenden. Hier ist ein einfaches Beispiel für ein Mietermodell:
<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Tenant extends Model { protected $guarded = []; // 租户和用户之间的关联关系 public function users() { return $this->hasMany(User::class); } }
Als nächstes müssen wir für jeden Mieter eine unabhängige Datenbank erstellen und mehrere Datenbankverbindungen in Laravel konfigurieren. Wir können diese Datenbankverbindungen in der Konfigurationsdatei config/database.php wie folgt definieren:
<?php return [ // 默认数据库连接 'default' => env('DB_CONNECTION', 'mysql'), 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], 'tenant' => [ 'driver' => 'mysql', 'host' => env('TENANT_DB_HOST', '127.0.0.1'), 'port' => env('TENANT_DB_PORT', '3306'), 'database' => env('TENANT_DB_DATABASE', 'forge'), 'username' => env('TENANT_DB_USERNAME', 'forge'), 'password' => env('TENANT_DB_PASSWORD', ''), 'unix_socket' => env('TENANT_DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ], // ... ];
In der obigen Konfigurationsdatei haben wir eine Datenbankverbindung mit dem Namen „tenant“ hinzugefügt und die entsprechende Verbindung in der .env-Datei konfiguriert. Die Informationen lauten wie folgt:
TENANT_DB_HOST=127.0.0.1 TENANT_DB_PORT=3306 TENANT_DB_DATABASE=tenant_db TENANT_DB_USERNAME=root TENANT_DB_PASSWORD=secret
Als nächstes müssen wir in Laravel eine Middleware definieren, um die Isolierung von mandantenfähigen Berechtigungen zu implementieren. Mithilfe von Middleware können wir Anfragen abfangen und feststellen, ob der angeforderte Mandant mit dem Mandanten übereinstimmt, zu dem der aktuell angemeldete Benutzer gehört, und so eine Berechtigungsisolierung erreichen. Das Folgende ist ein einfaches Middleware-Beispiel:
<?php namespace AppHttpMiddleware; use Closure; use IlluminateSupportFacadesAuth; use IlluminateSupportFacadesDB; class TenantMiddleware { public function handle($request, Closure $next) { $tenantId = $request->route('tenantId'); $user = Auth::user(); if ($user && $tenantId != $user->tenant_id) { abort(403, 'Access denied.'); } $this->switchConnection($tenantId); return $next($request); } private function switchConnection($tenantId) { // 切换到对应租户的数据库连接 config(['database.connections.tenant.database' => "tenant_{$tenantId}"]); DB::purge('tenant'); } }
Im obigen Beispiel erhalten wir zunächst die Informationen des aktuell angemeldeten Benutzers über die Methode Auth::user() und ermitteln, ob der Mandant, zu dem der Benutzer gehört, mit dem angeforderten übereinstimmt Mieter; wenn er nicht übereinstimmt, wird ein 403-Fehler zurückgegeben. Anschließend wechseln wir über die Methode switchConnection() zur Datenbankverbindung des entsprechenden Mandanten.
Abschließend müssen wir die Middleware in der Routing-Datei registrieren und das entsprechende Routing-Beispiel hinzufügen:
<?php use IlluminateSupportFacadesRoute; // ... Route::group(['middleware' => ['auth', 'tenant']], function () { Route::get('/dashboard', [DashboardController::class, 'index']); Route::get('/reports', [ReportsController::class, 'index']); });
Im obigen Beispiel haben wir zwei Middleware registriert: Auth wird zur Überprüfung des Benutzeranmeldestatus verwendet, und Tenant wird zur Ausführung verwendet Isolierung mehrerer Mandantenberechtigungen. Wir können die Informationen des aktuell angemeldeten Benutzers erhalten, indem wir die Methode Auth::user() aufrufen und in der Middleware ein Urteil fällen.
Das Obige sind die grundlegenden Ideen und Codebeispiele für die Implementierung der mehrinstanzenfähigen Berechtigungsisolierung. Natürlich können tatsächliche Anwendungsszenarien komplexer sein und entsprechende Anpassungen und Erweiterungen basierend auf den tatsächlichen Bedürfnissen erfordern. In jedem Fall können wir jedoch die leistungsstarken Berechtigungsfunktionen und den Middleware-Mechanismus von Laravel verwenden, um eine Berechtigungsisolierung in mandantenfähigen Systemen zu erreichen und so die Unabhängigkeit und Sicherheit der Daten zwischen verschiedenen Mandanten sicherzustellen.
Das obige ist der detaillierte Inhalt vonErweiterte Implementierung der Laravel-Berechtigungsfunktion: So erreichen Sie die Isolierung mehrerer Mandanten. 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



Es ermöglicht Benutzern, detailliertere Vorgänge und Anpassungen des Systems durchzuführen. Die Root-Berechtigung ist eine Administratorberechtigung im Android-System. Das Erhalten von Root-Rechten erfordert normalerweise eine Reihe langwieriger Schritte, die für normale Benutzer jedoch möglicherweise nicht sehr benutzerfreundlich sind. Durch die Aktivierung von Root-Berechtigungen mit einem Klick wird in diesem Artikel eine einfache und effektive Methode vorgestellt, mit der Benutzer problemlos Systemberechtigungen erhalten können. Verstehen Sie die Bedeutung und Risiken von Root-Berechtigungen und genießen Sie größere Freiheiten, damit Benutzer das Mobiltelefonsystem vollständig kontrollieren können. Verstärken Sie die Sicherheitskontrollen, passen Sie Designs an und Benutzer können vorinstallierte Anwendungen löschen. Allerdings sind beispielsweise das versehentliche Löschen von Systemdateien, das zu Systemabstürzen führt, die übermäßige Nutzung von Root-Rechten und die versehentliche Installation von Malware ebenfalls riskant. Bevor Sie Root-Rechte verwenden

Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

Für Anfänger bietet CodeIgniter eine sanftere Lernkurve und weniger Funktionen, deckt aber die Grundbedürfnisse ab. Laravel bietet einen größeren Funktionsumfang, weist jedoch eine etwas steilere Lernkurve auf. In Bezug auf die Leistung schneiden sowohl Laravel als auch CodeIgniter gut ab. Laravel verfügt über eine umfangreichere Dokumentation und aktive Community-Unterstützung, während CodeIgniter einfacher und leichtgewichtiger ist und über starke Sicherheitsfunktionen verfügt. Im praktischen Fall der Erstellung einer Blogging-Anwendung vereinfacht EloquentORM von Laravel die Datenmanipulation, während CodeIgniter mehr manuelle Konfiguration erfordert.

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?

Bei der Auswahl eines Frameworks für große Projekte haben Laravel und CodeIgniter jeweils ihre eigenen Vorteile. Laravel ist für Anwendungen auf Unternehmensebene konzipiert und bietet modularen Aufbau, Abhängigkeitsinjektion und einen leistungsstarken Funktionsumfang. CodeIgniter ist ein leichtes Framework, das sich eher für kleine bis mittelgroße Projekte eignet und Wert auf Geschwindigkeit und Benutzerfreundlichkeit legt. Für große Projekte mit komplexen Anforderungen und einer großen Anzahl von Benutzern sind die Leistung und Skalierbarkeit von Laravel besser geeignet. Für einfache Projekte oder Situationen mit begrenzten Ressourcen sind die leichten und schnellen Entwicklungsfunktionen von CodeIgniter idealer.

Für kleine Projekte eignet sich Laravel, für größere Projekte, die starke Funktionalität und Sicherheit erfordern. CodeIgniter eignet sich für sehr kleine Projekte, die geringes Gewicht und Benutzerfreundlichkeit erfordern.

Vergleichen Sie Laravel's Blade und die Twig-Vorlagen-Engine von CodeIgniter und wählen Sie je nach Projektanforderungen und persönlichen Vorlieben: Blade basiert auf der MVC-Syntax, die eine gute Codeorganisation und Vorlagenvererbung fördert. Twig ist eine Bibliothek eines Drittanbieters, die flexible Syntax, leistungsstarke Filter, erweiterten Support und eine Sicherheits-Sandbox bietet.
