suchen
HeimPHP-FrameworkLaravelLaravel-Installationsberechtigungsverwaltung

Laravel ist ein sehr beliebtes PHP-Entwicklungsframework. Es bietet viele praktische Tools und Komponenten, die die Entwicklungseffizienz erheblich verbessern können. Bei der Entwicklung von Anwendungen ist häufig eine Benutzerrechteverwaltung erforderlich. Laravel bietet eine sehr praktische Berechtigungsverwaltungsfunktion, mit deren Hilfe wir die Berechtigungskontrolle schnell und sicher implementieren können.

In diesem Artikel wird die Installation und Konfiguration der Laravel-Berechtigungsverwaltung unter folgenden Aspekten vorgestellt:

  1. Installation von Laravel-Berechtigungsverwaltungskomponenten
  2. Datenbankmigration
  3. Benutzerauthentifizierung
  4. Rollen- und Berechtigungsverwaltung
  5. Middleware
  6. Routenschutz

1. Installieren Sie die Laravel-Berechtigungsverwaltungskomponente

In Laravel können wir die Spatie/Laravel-Berechtigungskomponente über Composer installieren, um die Berechtigungsverwaltungsfunktion zu implementieren. Wir können den folgenden Befehl im Stammverzeichnis des Projekts ausführen, um diese Komponente zu installieren:

composer require spatie/laravel-permission

Nachdem die Installation abgeschlossen ist, müssen wir den Dienstanbieter dieser Komponente in der Datei config/app.php hinzufügen:

'providers' => [
    // ...
    SpatiePermissionPermissionServiceProvider::class,
],

At Gleichzeitig in derselben Datei die Fassade dieser Komponente hinzufügen in:

'aliases' => [
    // ...
    'Permission' => SpatiePermissionFacadesPermission::class,
    'Role' => SpatiePermissionFacadesRole::class,
],

2. Datenbankmigration

Nach der Installation der Komponente müssen wir die Datenbankmigration ausführen, um berechtigungsbezogene Tabellen zu erstellen. Wir können den Befehl artisan verwenden, um die Datenbankmigrationsdatei zu generieren:

php artisan make:migration create_permission_tables

Öffnen Sie dann die generierte Migrationsdatei und fügen Sie den folgenden Code hinzu:

class CreatePermissionTables extends Migration
{
    public function up()
    {
        Schema::create('permissions', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('guard_name');
            $table->timestamps();
        });

        Schema::create('roles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('guard_name');
            $table->timestamps();
        });

        Schema::create('model_has_roles', function (Blueprint $table) {
            $table->integer('role_id')->unsigned();
            $table->morphs('model');
            $table->string('model_type')->nullable();
            $table->string('guard_name');
            $table->foreign('role_id')->references('id')->on('roles')
                  ->onDelete('cascade');
            $table->primary(['role_id', 'model_id', 'model_type']);
        });

        Schema::create('model_has_permissions', function (Blueprint $table) {
            $table->integer('permission_id')->unsigned();
            $table->morphs('model');
            $table->string('model_type')->nullable();
            $table->string('guard_name');
            $table->foreign('permission_id')->references('id')->on('permissions')
                  ->onDelete('cascade');
            $table->primary(['permission_id', 'model_id', 'model_type']);
        });

        Schema::create('role_has_permissions', function (Blueprint $table) {
            $table->integer('permission_id')->unsigned();
            $table->integer('role_id')->unsigned();
            $table->string('guard_name');
            $table->foreign('permission_id')->references('id')->on('permissions')
                  ->onDelete('cascade');
            $table->foreign('role_id')->references('id')->on('roles')
                  ->onDelete('cascade');
            $table->primary(['permission_id', 'role_id']);
        });
    }

    public function down()
    {
        Schema::dropIfExists('permissions');
        Schema::dropIfExists('roles');
        Schema::dropIfExists('model_has_roles');
        Schema::dropIfExists('model_has_permissions');
        Schema::dropIfExists('role_has_permissions');
    }
}

Dann können wir den Migrationsbefehl ausführen:

php artisan migrate

Auf diese Weise werden die zugehörigen Tabellen werden in der Datenbank erstellt.

3. Benutzerauthentifizierung

Als nächstes müssen wir die Benutzerauthentifizierungsfunktion in der Anwendung implementieren. Laravel hat uns ein sehr praktisches Benutzerauthentifizierungssystem zur Verfügung gestellt. Wir müssen nur den folgenden Befehl ausführen:

php artisan make:auth

Dieser Befehl generiert eine Seite mit Benutzeranmeldung, Registrierung, Passwortänderung und anderen Funktionen. Durch diese Vorgänge können wir Benutzer erstellen und verwalten.

4. Rollen- und Berechtigungsverwaltung

Bei der Laravel-Berechtigungsverwaltung sind Rollen und Berechtigungen sehr wichtige Konzepte. Wir können Benutzerzugriffskontrollregeln über Rollen und Berechtigungen definieren.

  1. Rollen erstellen

Wir können die Rollenfassade verwenden, um Rollen zu erstellen. Zum Beispiel:

use SpatiePermissionModelsRole;

$role = Role::create(['name' => 'admin']);

Der obige Code erstellt eine Rolle mit dem Namen „admin“.

  1. Berechtigungen erstellen

Ähnlich können wir die Berechtigungsfassade verwenden, um Berechtigungen zu erstellen:

use SpatiePermissionModelsPermission;

$permission = Permission::create(['name' => 'create posts']);

Der obige Code erstellt eine Berechtigung namens „Beiträge erstellen“.

  1. Berechtigungen für Rollen erteilen

Da wir nun über Rollen und Berechtigungen verfügen, müssen wir auch Rollen Berechtigungen erteilen. Wir können dies mit der Methode „givePermissionTo“ der Rolle tun:

$role = Role::findByName('admin');
$permission = Permission::findByName('create posts');
$role->givePermissionTo($permission);
  1. Überprüfen Sie, ob der Benutzer über die Berechtigungen verfügt

Nachdem wir nun die Rolle und Berechtigungen definiert haben, können wir die von der Laravel-Berechtigungsverwaltung bereitgestellte Methode „can“ verwenden, um zu überprüfen, ob Der Benutzer hat die Berechtigungen. Zum Beispiel:

$user->can('create posts');

Der obige Code gibt einen booleschen Wert zurück, der angibt, ob der aktuelle Benutzer über die Berechtigung „Beiträge erstellen“ verfügt.

  1. Überprüfen Sie, ob der Benutzer eine Rolle hat

Ebenso können wir auch die Methode hasRole verwenden, um zu überprüfen, ob der Benutzer eine bestimmte Rolle hat. Zum Beispiel:

$user->hasRole('admin');

Der obige Code gibt einen booleschen Wert zurück, der angibt, ob der aktuelle Benutzer die Rolle „Administrator“ hat.

5. Middleware

Wir können die Middleware von Laravel verwenden, um unsere Routen und Controller zu schützen und eine Berechtigungskontrolle zu erreichen. Hier ist der Beispielcode:

Route::group([
    'middleware' => ['role:admin'],
], function () {
    Route::get('/admin', function () {
        //
    });
});

Route::group([
    'middleware' => ['permission:create posts'],
], function () {
    Route::get('/new-post', function () {
        //
    });
});

Der obige Code schützt die Routen „/admin“ und „/new-post“ und ermöglicht den Zugriff nur Benutzern mit der Rolle „admin“ und der Berechtigung „Beiträge erstellen“.

6. Routenschutz

Schließlich müssen wir unsere Routen und Controller schützen. Um dies zu erreichen, können wir die Methoden „can“ und „authorise“ verwenden.

public function store(Request $request)
{
    $this->authorize('create', Post::class);

    // ...
}

public function edit(Request $request, Post $post)
{
    if (! $request->user()->can('edit', $post)) {
        abort(403);
    }

    // ...
}

Der obige Code schützt die Speicher- und Bearbeitungsmethoden und ermöglicht den Zugriff nur Benutzern mit den Berechtigungen „Erstellen“ und „Bearbeiten“.

Zusammenfassung

Im Allgemeinen ist die Berechtigungsverwaltung von Laravel sehr bequem und sicher. Wir können die Berechtigungskontrolle implementieren, indem wir die Komponente spatie/laravel-permission installieren und die vielen von Laravel bereitgestellten Methoden und Funktionen verwenden, um Rollen und Berechtigungen zu verwalten. Durch Middleware und Routenschutz können wir unsere Anwendungen einfach schützen und den Benutzerzugriff einschränken.

Das obige ist der detaillierte Inhalt vonLaravel-Installationsberechtigungsverwaltung. 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
Full-Stack-Entwicklung mit Laravel: Verwalten von APIs und Frontend-LogikFull-Stack-Entwicklung mit Laravel: Verwalten von APIs und Frontend-LogikApr 28, 2025 am 12:22 AM

In der Entwicklung von Laravel Full-Stack sind effektive Methoden zur Verwaltung von APIs und Front-End-Logik: 1) Verwenden von APIs mit erholsamen Controllern und Ressourcenrouting-Management; 2) Verarbeitung der Front-End-Logik durch Klingenvorlagen und Vue.js oder React; 3) Optimierung der Leistung durch API -Versioning und Paging; 4) Aufrechterhaltung der Trennung von Back-End- und Front-End-Logik, um die Wartbarkeit und Skalierbarkeit zu gewährleisten.

Verloren in der Übersetzung: Kulturelle Nuancen und Missverständnisse in verteilten TeamsVerloren in der Übersetzung: Kulturelle Nuancen und Missverständnisse in verteilten TeamsApr 28, 2025 am 12:22 AM

TotackleculturalinTricieSchuit -Verteilerteams, FosteranenvironmentcelebratingDifferzen, Bemindfulofcommunication, Andusetoolsforclarity.1) ImplementculturalexchangesSessionStosharestories undtraditions.2) adjitcommunicationMethodstosuitculturalPreferenz

Messung der Verbindung: Analytik und Erkenntnisse für die Effektivität der FernkommunikationMessung der Verbindung: Analytik und Erkenntnisse für die Effektivität der FernkommunikationApr 28, 2025 am 12:16 AM

ToassStheeFeffectivityofremoteCommunication, Focuson: 1) EngagementMetricSlikemessageFrequency und ResponSetime, 2) Sentimentanalysistogaigeemotionaltone, 3) treffeneffektivitätsthroughattendanceAndactionItems und 4) networkanalysistestandCommunivitätscommunicationPa

Sicherheitsrisiken in verteilten Teams: Schutz der Daten in einer abgelegenen WeltSicherheitsrisiken in verteilten Teams: Schutz der Daten in einer abgelegenen WeltApr 28, 2025 am 12:11 AM

ToprotectsensistivedataTaNdivicutTeams, Implementamulti-facetedApproach: 1) UseSend-to-endencryptionForsecurecommunication, 2) applyRol-basierte AccessControl (RBAC) TomanagePermissions, 3) VerschlüsselungsecryaatrestwithKeyManonmenttools und 4) fosterasecuritycreservec

Über E -Mail hinaus: Erforschung moderner Kommunikationsplattformen für die Remote -ZusammenarbeitÜber E -Mail hinaus: Erforschung moderner Kommunikationsplattformen für die Remote -ZusammenarbeitApr 28, 2025 am 12:03 AM

Nein, EmailisnotTheBostForremoteCollaborationToday.moderne PlatformLack, Microsoft-Teams, Zoom, Asana, AndtrellFerreal-Time-Kommunikation, Projektmanagement und IntegrationFeaturästhankteamwork und Effiction.

Kollaborative Dokumentbearbeitung: Staffeln von Workflow in verteilten TeamsKollaborative Dokumentbearbeitung: Staffeln von Workflow in verteilten TeamsApr 27, 2025 am 12:21 AM

Die kollaborative Dokumentbearbeitung ist ein effektives Tool für verteilte Teams, um ihre Workflows zu optimieren. Es verbessert den Kommunikations- und Projektfortschritt durch Zusammenarbeit in Echtzeit und Feedback-Schleifen. Zu den gängigen Tools gehören Google Docs, Microsoft-Teams und Begriffe. Achten Sie bei der Verwendung auf Herausforderungen wie Versionskontrolle und Lernkurve.

Wie lange wird die vorherige Laravel -Version unterstützt?Wie lange wird die vorherige Laravel -Version unterstützt?Apr 27, 2025 am 12:17 AM

The -reviousversionoflaravelissupported withbugfixesforsimmonthsandSecurityFixesforeyearafteranewmajorversionsRelease.VerverständnisThissupporttimelineIscialForPlanningUpupgrades, SecuringProjectStability und

Nutzung von Laravels Funktionen für Frontend- und Backend -EntwicklungNutzung von Laravels Funktionen für Frontend- und Backend -EntwicklungApr 27, 2025 am 12:16 AM

LaravelcanbeeffectiveforvectorbothFrontendandbackendDevelopment.1) Backend: Uttilizelaravel'seloquentorMForSimplifiedDatabaseInteractions.2 Frontend: HebelBladetEmplatesforCleanHtmlandIntevue.jsfordynamics, EnsuringsAnlateAnteAntegendinteg

See all articles

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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft