Heim >PHP-Framework >Denken Sie an PHP >So implementieren Sie die Berechtigungskontrolle mit ThinkPHP6

So implementieren Sie die Berechtigungskontrolle mit ThinkPHP6

WBOY
WBOYOriginal
2023-06-20 19:55:423252Durchsuche

Da das Internet immer weiter entwickelt wird, müssen viele Websites die Benutzerberechtigungen kontrollieren. Die Berechtigungskontrolle kann die Sicherheit des Systems schützen und verhindern, dass unbefugtes Personal auf Systemressourcen zugreift, was bei kommerziellen Anwendungen sehr wichtig ist. Bei der Entwicklung von Anwendungen mit PHP bietet das ThinkPHP-Framework eine einfache Lösung.

Das ThinkPHP6-Framework bietet Benutzern Berechtigungskontrollfunktionen basierend auf RBAC (rollenbasierte Zugriffskontrolle). In diesem Artikel wird erläutert, wie Sie mit ThinkPHP6 die Berechtigungssteuerung implementieren, einschließlich der Festlegung von Berechtigungen, der Verwendung von Berechtigungen in Controllern und Ansichten sowie der Speicherung von Berechtigungssteuerungsinformationen in der Datenbank.

1. Grundkonzepte

Bevor wir die Implementierung der Berechtigungskontrolle vorstellen, müssen wir einige Grundkonzepte verstehen:

  1. Rolle: Benutzern mit denselben Funktionen und Verantwortlichkeiten wird eine Rolle zugewiesen, um ihre Berechtigungsverwaltung durchzuführen.
  2. Berechtigung: Definiert die Ressourcen und Vorgänge, auf die Benutzer im System zugreifen können, einschließlich Controller, Methoden und Ansichten.
  3. Rollen-Berechtigungs-Beziehung: Verknüpfen Sie Rollen mit ihren entsprechenden Berechtigungen, um die Berechtigungsverwaltung von Benutzern mit einer bestimmten Rolle zu erleichtern.

2. Berechtigungen festlegen

  1. Berechtigungen konfigurieren

In ThinkPHP6 werden die Konfigurationsinformationen aller Berechtigungen in der Datei appcontroller dmin.php gespeichert. In der Konfigurationsdatei gibt es zwei Arten von Berechtigungen: öffentliche Berechtigungen und private Berechtigungen.

Öffentliche Berechtigungen beziehen sich auf Ressourcen und Vorgänge, auf die jeder Benutzer zugreifen kann, z. B. die Systemhomepage usw. Private Berechtigungen beziehen sich auf Ressourcen und Vorgänge, auf die nur Benutzer mit bestimmten Rollen oder Berechtigungen zugreifen können.

Fügen Sie alle öffentlichen Berechtigungen zur Datei „appcontroller dmin.php“ hinzu:

return [
    // 公共权限
    'public' => [
        'index/index',
        'index/home'
    ],

    // 私有权限
    'private' => []
];
  1. Konfigurieren Sie private Berechtigungen.

Für private Berechtigungen müssen wir diese Berechtigungen zur privaten Berechtigungsgruppe der Datei „appcontroller dmin.php“ hinzufügen.

Zum Beispiel können wir eine Berechtigung namens „Benutzer“ hinzufügen, die den Zugriff auf die getUserList-Methode im AdminController-Controller ermöglicht:

// 私有权限
'private' => [
    'user' => [
        'AdminController/getUserList'
    ]
]

3. Berechtigungen in Controllern und Ansichten verwenden

  1. Berechtigungen überprüfen

Wenn ein Benutzer zugreift Für eine Seite, die bestimmte Berechtigungen erfordert, müssen wir die Berechtigungen des Benutzers überprüfen. In ThinkPHP6 können wir die von der Auth-Klasse bereitgestellte Prüfmethode verwenden, um zu überprüfen, ob der Benutzer über bestimmte Berechtigungen verfügt.

Zum Beispiel können wir überprüfen, ob der Benutzer über Berechtigungen mit dem Namen „Benutzer“ verfügt, indem wir Folgendes verwenden:

if (Auth::check('user')) {
    // 执行用户有权访问的操作
} else {
    // 返回无权访问页面
}
  1. Überprüfen Sie die Rolle des aktuellen Benutzers

Bei der Durchführung bestimmter Vorgänge müssen wir die Rolle des aktuellen Benutzers kennen und sich anhand seines Charakters verhalten entsprechend. In ThinkPHP6 können wir die getRole-Methode in der Auth-Klasse verwenden, um die Rolle des aktuellen Benutzers abzurufen.

Zum Beispiel können wir die folgende Methode verwenden, um die Rolle des aktuellen Benutzers abzurufen:

$role = Auth::getRole();
  1. Berechtigungen in der Ansicht verwenden

Wir können auch Berechtigungssteuerelemente in der Ansicht verwenden, um einige Elemente anzuzeigen oder auszublenden. Beispielsweise können wir in der Blade-Vorlage die can-Direktive verwenden, um zu prüfen, ob der aktuelle Benutzer über eine bestimmte Berechtigung verfügt.

Beispiel:

<!-- 如果用户有'user'权限,则显示下面的按钮 -->
@can('user')
    <button type="button" class="btn btn-sm btn-primary">操作</button>
@endcan

4. Berechtigungskontrollinformationen in der Datenbank speichern

Um die Berechtigungskontrolle flexibler zu gestalten, können wir Berechtigungsinformationen zur einfachen Verwaltung und Änderung in der Datenbank speichern. ThinkPHP6 stellt die Auth-Klasse bereit, mit der Berechtigungsinformationen einfach aus der Datenbank gelesen und überprüft werden können.

Beim Festlegen von Berechtigungen in der Datenbank müssen wir vier Tabellen erstellen:

  1. Benutzertabelle (Benutzer): speichert Benutzerinformationen, einschließlich Benutzer-ID, Benutzername, Passwort usw.
  2. Rollentabelle (Rollen): speichert Rolleninformationen, einschließlich Rollen-ID und Rollenname usw.
  3. Berechtigungstabelle: speichert Berechtigungsinformationen, einschließlich Berechtigungs-ID und Berechtigungsname.
  4. Rollenberechtigungstabelle (role_permission): speichert die Beziehungsinformationen zwischen Rollen und Berechtigungen.

In der Auth-Klasse verwenden wir die folgende Methode, um den Tabellennamen für die Überprüfung festzulegen:

protected $table = [
    'auth' => 'auth',
    'users' => 'users',
    'roles' => 'roles',
    'permissions' => 'permissions',
    'role_permissions' => 'role_permission'
];

Das Obige ist der gesamte Prozess der Verwendung von ThinkPHP6 zur Implementierung der Berechtigungskontrolle. Durch die oben genannten Vorgänge können wir problemlos eine RBAC-basierte Berechtigungskontrolle implementieren und die Sicherheit und Kontrollierbarkeit des Projekts verbessern.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Berechtigungskontrolle mit ThinkPHP6. 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