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:
2. Berechtigungen festlegen
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' => [] ];
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
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 { // 返回无权访问页面 }
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();
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:
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!