Heim PHP-Framework Denken Sie an PHP So implementieren Sie mit ThinkPHP6 die Berechtigungsverwaltung für Benutzerrollen

So implementieren Sie mit ThinkPHP6 die Berechtigungsverwaltung für Benutzerrollen

Jun 20, 2023 pm 10:06 PM
thinkphp 权限管理 用户角色

Angesichts der kontinuierlichen Geschäftsentwicklung verfügen viele kleine und mittlere Unternehmen über eigene Benutzerverwaltungssysteme, und die Verwaltung von Benutzerrechten ist ein wichtiger Bestandteil davon. Um vertrauliche Informationen im System zu schützen und den normalen Geschäftsbetrieb sicherzustellen, müssen wir einen Rollenberechtigungsverwaltungsmechanismus verwenden, um sicherzustellen, dass Benutzer mit unterschiedlichen Rollen nur auf bestimmte Ressourcen und Daten zugreifen können.

In diesem Artikel wird das ThinkPHP6-Framework als Beispiel verwendet, um vorzustellen, wie die von ihm bereitgestellte Berechtigungskontroll-Middleware und Erweiterungspakete zur Implementierung der Benutzerrollen-Berechtigungsverwaltung verwendet werden.

  1. Rollentabelle und Berechtigungstabelle erstellen

Zuerst müssen wir zwei Datenbanktabellen definieren, eine ist die Rollentabelle, die zum Speichern von Systemrolleninformationen verwendet wird, und die andere ist die Berechtigungstabelle, die zum Speichern von Systemberechtigungsinformationen verwendet wird.

CREATE TABLE role (role (
id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
name varchar(20) NOT NULL COMMENT '角色名称',
description varchar(50) NOT NULL COMMENT '角色描述',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';

CREATE TABLE permission (
id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
name varchar(20) NOT NULL COMMENT '权限名称',
description varchar(50) NOT NULL COMMENT '权限描述',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表';

我们可以使用ThinkPHP提供的数据库迁移工具来创建表:php think migrate:run。

  1. 创建角色和权限模型

接下来,我们需要创建角色和权限的模型。在app/model目录下创建Role.php和Permission.php文件,代码如下:

namespace appmodel;

use thinkModel;

class Role extends Model
{

protected $table = 'role';
Nach dem Login kopieren

}

namespace appmodel;

use thinkModel;

class Permission extends Model
{

protected $table = 'permission';
Nach dem Login kopieren

}

  1. 创建角色和权限关联表

由于一个用户可能拥有多个角色,一个角色也可能对应多个权限,所以我们需要创建一个角色和权限的关联表。在数据库中创建一个role_permission表。

CREATE TABLE role_permission (
id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
role_id int(11) NOT NULL COMMENT '角色ID',
permission_id int(11) NOT NULL COMMENT '权限ID',
PRIMARY KEY (id),
KEY role_id (role_id),
KEY permission_id (permission_id id int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
name varchar(20) NOT NULL COMMENT 'Rollenname',

description varchar(50) NOT NULL COMMENT 'Rollenbeschreibung',

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT = 'Role table';


CREATE TABLE permission (

id int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primary key',

name varchar( 20) NOT NULL COMMENT 'Berechtigungsname',

description varchar(50) NOT NULL COMMENT 'Berechtigungsbeschreibung',

PRIMARY KEY (id)
) ENGINE= InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Permission Table';

Wir können das von ThinkPHP bereitgestellte Datenbankmigrationstool verwenden, um die Tabelle zu erstellen: php think migrate:run.

    Erstellen Sie Rollen- und Berechtigungsmodelle

    Als nächstes müssen wir Rollen- und Berechtigungsmodelle erstellen. Erstellen Sie die Dateien Role.php und Permission.php im Verzeichnis app/model. Der Code lautet wie folgt:

    namespace appmodel;

    use thinkModel;

      class Role erweitert Model
    1. {
    2. protected $table = 'role';
      
      public function permissions()
      {
          return $this->belongsToMany(
              Permission::class,
              'role_permission',
              'role_id',
              'permission_id'
          );
      }
      Nach dem Login kopieren
    }

    ?< Wenn Sie mehrere Rollen haben, kann eine Rolle auch mehreren Berechtigungen entsprechen. Daher müssen wir eine Zuordnungstabelle für Rollen und Berechtigungen erstellen. Erstellen Sie eine Role_permission-Tabelle in der Datenbank.

    CREATE TABLE role_permission (
    id int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',

    role_id int(11) NOT NULL KOMMENTAR 'Rollen-ID',

    permission_id int(11) NICHT NULL KOMMENTAR 'Berechtigungs-ID',
    PRIMÄRSCHLÜSSEL (id),
    SCHLÜSSEL role_id</code > (<code>role_id),

    KEY permission_id (permission_id)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Rollen-Berechtigungs-Zuordnungstabelle' ;

    Definieren Sie die Viele-zu-Viele-Beziehung von Rollen und Berechtigungen im Modell:

    namespace appmodel;

      use thinkModel;
    1. class Role erweitert Model
    {

    protected $table = 'permission';
    
    public function roles()
    {
        return $this->belongsToMany(
            Role::class,
            'role_permission',
            'permission_id',
            'role_id'
        );
    }
    Nach dem Login kopieren

    }


    < ?php

    namespace appmodel;

    use thinkModel;

    class Permission erweitert Model
      {
    1. public function handle($request, Closure $next)
      {
          if (Session::has('user')) {
              $roles = Db::table('user')
                  ->alias('u')
                  ->leftJoin('role_user ru', 'u.id = ru.user_id')
                  ->leftJoin('role r', 'ru.role_id = r.id')
                  ->where('u.id', '=', Session::get('user')->id)
                  ->field('r.id')
                  ->select();
              $permissions = Config::get('permissions');
              foreach ($roles as $role) {
                  $rolePermissions = Db::table('role_permission')
                      ->where('role_id', '=', $role->id)
                      ->field('permission_id')
                      ->select();
                  foreach ($rolePermissions as $rolePermission) {
                      if (in_array($rolePermission->permission_id, $permissions)) {
                          return $next($request);
                      }
                  }
              }
          }
          abort(403, '没有权限');
      }
      Nach dem Login kopieren
    2. }

    Middleware definieren


    In ThinkPHP6 ist Middleware ein leistungsstarkes Tool zur Verarbeitung von Anfragen. Wir können die Berechtigungskontrolle über Middleware implementieren . Erstellen Sie eine CheckAuth-Middleware, um festzustellen, ob der Benutzer berechtigt ist, den aktuellen Vorgang auszuführen. Erstellen Sie die Datei CheckAuth.php im Verzeichnis appmiddleware mit dem folgenden Code:

    namespace appmiddleware;

    use think acadeDb;

    use think acadeSession;

    use think acadeConfig;

    class CheckAuth

    {

    1 => 'user.create',
    2 => 'user.read',
    3 => 'user.update',
    4 => 'user.delete',
    Nach dem Login kopieren

    }

    Diese Middleware fragt zunächst alle Rollen ab, die dem aktuellen Benutzer gehören. Wenn Berechtigungen vorhanden sind, die mit der aktuellen Anforderung übereinstimmen, wird die Ausführung fortgesetzt, andernfalls wird ein 403-Fehler angezeigt wird zurückgegeben.

    Berechtigungskonfigurationsdatei erstellen

    🎜🎜Um die Verwaltung von Systemberechtigungen zu erleichtern, können wir die von ThinkPHP bereitgestellte Konfigurationsfunktion verwenden, um alle Berechtigungen in die Konfigurationsdatei zu schreiben. Erstellen Sie eine Datei „permissions.php“ im Konfigurationsverzeichnis. Der Code lautet wie folgt: 🎜🎜
    // ...
    'check_auth' => appmiddlewareCheckAuth::class,
    Nach dem Login kopieren
🎜];🎜🎜Wir können alle Berechtigungen des Systems in Form von Schlüssel/Wert aufzeichnen. Der Schlüssel ist ein ganzzahliger Wert, der den Namen der Berechtigung darstellt. 🎜🎜🎜Middleware anwenden🎜🎜🎜Abschließend müssen wir die oben genannte Middleware tatsächlich anwenden. Öffnen Sie die Datei middleware.php im Konfigurationsverzeichnis und fügen Sie die CheckAuth-Middleware hinzu. 🎜🎜
public function create()
{
    $this->middleware('check_auth');
    // ...
}
Nach dem Login kopieren
🎜];🎜🎜Die Anwendungsreihenfolge der Middleware wird von vorne nach hinten entsprechend dem Schlüsselnamen des Arrays ausgeführt. Wir können die Ausführungsreihenfolge der Middleware über den Array-Index anpassen. 🎜🎜Auf Controllern oder Methoden, die eine Berechtigungskontrolle erfordern, können Sie die Middleware-Methode verwenden, um die CheckAuth-Middleware zu binden. 🎜🎜Das obige ist der detaillierte Inhalt vonSo implementieren Sie mit ThinkPHP6 die Berechtigungsverwaltung für Benutzerrollen. 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

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

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)

So führen Sie das Thinkphp-Projekt aus So führen Sie das Thinkphp-Projekt aus Apr 09, 2024 pm 05:33 PM

Um das ThinkPHP-Projekt auszuführen, müssen Sie: Composer installieren, das Projektverzeichnis aufrufen und http://localhost:8000 aufrufen.

Es gibt mehrere Versionen von thinkphp Es gibt mehrere Versionen von thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP verfügt über mehrere Versionen, die für verschiedene PHP-Versionen entwickelt wurden. Zu den Hauptversionen gehören 3.2, 5.0, 5.1 und 6.0, während Nebenversionen dazu dienen, Fehler zu beheben und neue Funktionen bereitzustellen. Die neueste stabile Version ist ThinkPHP 6.0.16. Berücksichtigen Sie bei der Auswahl einer Version die PHP-Version, die Funktionsanforderungen und den Community-Support. Für optimale Leistung und Support wird empfohlen, die neueste stabile Version zu verwenden.

So verwenden Sie das Layui-Framework, um ein Berechtigungsverwaltungssystem zu entwickeln, das die Anmeldung mehrerer Benutzer unterstützt So verwenden Sie das Layui-Framework, um ein Berechtigungsverwaltungssystem zu entwickeln, das die Anmeldung mehrerer Benutzer unterstützt Oct 27, 2023 pm 01:27 PM

So verwenden Sie das Layui-Framework, um ein Berechtigungsverwaltungssystem zu entwickeln, das die Mehrbenutzeranmeldung unterstützt. Einführung: Im modernen Internetzeitalter müssen immer mehr Anwendungen die Mehrbenutzeranmeldung unterstützen, um personalisierte Funktionen und Berechtigungsverwaltung zu erreichen. Um die Sicherheit des Systems und den Datenschutz zu schützen, müssen Entwickler bestimmte Mittel verwenden, um Mehrbenutzer-Anmelde- und Berechtigungsverwaltungsfunktionen zu implementieren. In diesem Artikel wird erläutert, wie Sie mithilfe des Layui-Frameworks ein Berechtigungsverwaltungssystem entwickeln, das die Anmeldung mehrerer Benutzer unterstützt, und es werden spezifische Codebeispiele aufgeführt. Vorbereitung vor Beginn der Entwicklung

So führen Sie thinkphp aus So führen Sie thinkphp aus Apr 09, 2024 pm 05:39 PM

Schritte zum lokalen Ausführen von ThinkPHP Framework: Laden Sie ThinkPHP Framework herunter und entpacken Sie es in ein lokales Verzeichnis. Erstellen Sie einen virtuellen Host (optional), der auf das ThinkPHP-Stammverzeichnis verweist. Konfigurieren Sie Datenbankverbindungsparameter. Starten Sie den Webserver. Initialisieren Sie die ThinkPHP-Anwendung. Greifen Sie auf die URL der ThinkPHP-Anwendung zu und führen Sie sie aus.

So implementieren Sie ein Berechtigungsverwaltungssystem in Laravel So implementieren Sie ein Berechtigungsverwaltungssystem in Laravel Nov 02, 2023 pm 04:51 PM

So implementieren Sie ein Berechtigungsverwaltungssystem in Laravel Einführung: Mit der kontinuierlichen Entwicklung von Webanwendungen ist das Berechtigungsverwaltungssystem zu einer der Grundfunktionen vieler Anwendungen geworden. Laravel bietet als beliebtes PHP-Framework eine Fülle von Tools und Funktionen zur Implementierung von Berechtigungsmanagementsystemen. In diesem Artikel wird die Implementierung eines einfachen und leistungsstarken Berechtigungsverwaltungssystems in Laravel vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Gestaltungsideen des Berechtigungsverwaltungssystems Bei der Gestaltung des Berechtigungsverwaltungssystems müssen die folgenden Schlüsselpunkte berücksichtigt werden: Rollen und

Was ist besser, Laravel oder Thinkphp? Was ist besser, Laravel oder Thinkphp? Apr 09, 2024 pm 03:18 PM

Leistungsvergleich von Laravel- und ThinkPHP-Frameworks: ThinkPHP schneidet im Allgemeinen besser ab als Laravel und konzentriert sich auf Optimierung und Caching. Laravel schneidet gut ab, aber für komplexe Anwendungen ist ThinkPHP möglicherweise besser geeignet.

Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Nov 22, 2023 pm 12:01 PM

„Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben“ Mit der rasanten Entwicklung der Internettechnologie stellen Webanwendungen immer höhere Anforderungen an die Verarbeitung einer großen Anzahl gleichzeitiger Anforderungen und komplexer Geschäftslogik. Um die Systemleistung und das Benutzererlebnis zu verbessern, erwägen Entwickler häufig die Verwendung asynchroner Aufgaben, um einige zeitaufwändige Vorgänge auszuführen, z. B. das Senden von E-Mails, das Verarbeiten von Datei-Uploads, das Erstellen von Berichten usw. Im Bereich PHP bietet das ThinkPHP-Framework als beliebtes Entwicklungsframework einige praktische Möglichkeiten zur Implementierung asynchroner Aufgaben.

Beheben Sie das Problem, dass der temporäre Ordner aufgrund fehlender Schreibberechtigungen nicht installiert werden kann Beheben Sie das Problem, dass der temporäre Ordner aufgrund fehlender Schreibberechtigungen nicht installiert werden kann Dec 31, 2023 pm 01:24 PM

Das Problem, dass temporäre Ordner nicht ohne Schreibberechtigungen installiert werden können, bereitet vielen Benutzern Kopfzerbrechen. Tatsächlich ist der Vorgang nicht sehr mühsam. Sie müssen nur Ihr erweitertes Menü aufrufen, um Änderungen vorzunehmen Berechtigungen. Der temporäre Ordner kann nicht ohne Schreibberechtigung installiert werden: 1. Klicken Sie zunächst mit der rechten Maustaste auf „Dieser Computer“ auf dem Desktop und dann auf „Eigenschaften“. 2. Klicken Sie dann unten auf „Erweiterte Systemeinstellungen“. 3. Klicken Sie dann unten im Fenster auf „Umgebungsvariablen“. 4. Danach können Sie das Umgebungsvariablenfenster öffnen, auf die tmp-Datei klicken und „Bearbeiten“ auswählen. 5. Klicken Sie anschließend im sich öffnenden Fenster auf „Dateien durchsuchen“. 6. Legen Sie den neuen Variablenordner fest und klicken Sie auf OK. 7. Abschließend den Erfolg abwarten.

See all articles