Berechtigungskontrolltechnologie wird in der modernen Webanwendungsentwicklung immer wichtiger. Es hilft Entwicklern, Benutzerberechtigungen zu verwalten, den Datenzugriff zu kontrollieren und die Systemsicherheit zu schützen. ThinkPHP6 ist ein leistungsstarkes PHP-Framework, das eine Vielzahl von Berechtigungskontrolltechnologien bereitstellt. In diesem Artikel werden einige davon vorgestellt.
In ThinkPHP6 sind Authentifizierung und Autorisierung zwei verschiedene Konzepte. Unter Authentifizierung versteht man in der Regel die Überprüfung der Identität des Benutzers und die Feststellung, ob der Benutzer legitim ist. Unter Autorisierung versteht man die Gewährung der Berechtigung für Benutzer, auf bestimmte Ressourcen zuzugreifen. ThinkPHP6 stellt die Auth-Komponente zur Implementierung von Authentifizierungs- und Autorisierungsfunktionen bereit.
Die Auth-Komponente muss die Beziehung zwischen Benutzern, Rollen und Berechtigungen in der Konfigurationsdatei definieren und Authentifizierung und Autorisierung durch Aufrufen der Methoden der Auth-Klasse durchführen. Die spezifischen Schritte sind wie folgt:
(1) Definieren Sie die Beziehung
Definieren Sie die Beziehung zwischen Benutzern, Rollen und Berechtigungen in der Konfigurationsdatei, zum Beispiel:
'auth' => [
'auth_on' => true, // 认证开关 'auth_type' => 1, // 认证方式,1为实时认证;2为登录认证。 'auth_group' => 'auth_group', // 用户组数据表名 'auth_group_access' => 'auth_group_access', // 用户-用户组关系表 'auth_rule' => 'auth_rule', // 权限规则表 'auth_user' => 'admin_user', // 用户信息表
],
Im obigen Code ist der Schalter „auth_on“ auf „true“ gesetzt, um die Authentifizierungsfunktion zu aktivieren, und der Schalter „auth_type“ ist auf 1 gesetzt, um die Echtzeitauthentifizierung zu verwenden. Als nächstes werden die Namen von vier Tabellen definiert, nämlich Benutzergruppen, Benutzer-Benutzergruppen-Beziehungen, Berechtigungsregeln und Benutzerinformationen.
(2) Benutzer authentifizieren
Verwenden Sie die Prüfmethode der Auth-Klasse zur Benutzerauthentifizierung. Zum Beispiel:
use think acadeAuth;
//Authentifizierter Benutzer
if (Auth::check($username, $password)) {
// 认证通过
} else {
// 认证失败
}
Im obigen Code $username und $password ist der vom Benutzer eingegebene Benutzername bzw. das Passwort. Die Methode Auth::check gibt das Authentifizierungsergebnis zurück. Wenn die Authentifizierung erfolgreich ist, gibt sie „true“ zurück, andernfalls gibt sie „false“ zurück.
(3) Autorisierter Zugriff
Vor dem autorisierten Zugriff müssen die Rolle und Berechtigungen des aktuell angemeldeten Benutzers in der Sitzung gespeichert werden. Zum Beispiel:
use think acadeSession;
use think acadeRequest;
use think acadeAuth;
// Aktuelle Benutzerrolle und Berechtigungen speichern
$user = Auth::user();
$groups = Auth::getGroups( $user ['id']);
$rules = Auth::getRules($user['id']);
Session::set('user_groups', $groups);
Session::set('user_rules' , $ Rules);
Als nächstes verwenden Sie die Prüfmethode der Auth-Klasse im Controller, um festzustellen, ob der Benutzer Zugriffsrechte hat. Zum Beispiel:
use think acadeSession;
use think acadeRequest;
use think acadeAuth;
// Benutzerberechtigungen festlegen
$user = Session::get('user');
$groups = Session::get(' user_groups ');
$rules = Session::get('user_rules');
if (Auth::check(Request::path(), $groups, $rules)) {
// 用户有访问权限
} else {
// 用户无访问权限
}
Im obigen Code ruft Request::path() die URL-Adresse der aktuellen Anfrage ab; $groups und $rules sind die Rollen bzw. Berechtigungen des aktuellen Benutzers. Die Methode Auth::check ermittelt, ob der Benutzer Zugriffsrechte hat. Wenn ja, gibt sie true zurück, andernfalls gibt sie false zurück.
RBAC (Role-Based Access Control) ist eine rollenbasierte Zugriffskontrolltechnologie, die Benutzerrollen von Berechtigungen trennt und Benutzer Berechtigungen über Rollen erhalten. ThinkPHP6 bietet das RBAC-Erweiterungsmodul, mit dem sich problemlos eine rollenbasierte Zugriffskontrolle implementieren lässt.
(1) Installieren Sie das RBAC-Erweiterungsmodul
Die Installation des RBAC-Erweiterungsmoduls in ThinkPHP6 ist sehr praktisch. Sie müssen nur den folgenden Befehl in der Befehlszeile ausführen:
composer require jiaming/admin-rbac
( 2) Erstellen Sie eine Datenbanktabelle
Führen Sie den folgenden Befehl aus, um die erforderlichen Datenbanktabellen zu erstellen:
php think migrate:run --seed /vendor/jiaming/admin-rbac/database/migrations
(3) Mit RBAC
Für die Verwendung des RBAC-Erweiterungsmoduls müssen Rollen, Berechtigungen, Ressourcen und Regeln definiert werden. In ThinkPHP6 müssen RBAC-bezogene Konfigurationselemente in config/auth.php definiert werden, zum Beispiel:
'auth' => [
// ... 'auth_type' => 'rbac', 'rbac' => [ 'role_table' => 'admin_role', 'user_table' => 'admin_user', 'access_table' => 'admin_access', 'node_table' => 'admin_node', 'role_user_table' => 'admin_role_user', ],
],
Im obigen Code ist 'auth_type' auf 'rbac' gesetzt. , gibt die Verwendung der RBAC-Autorisierungsmethode an und definiert den Namen der relevanten Datentabelle.
Als nächstes müssen Sie RBAC im Controller initialisieren, zum Beispiel:
use jiamingAdminRbacRbac;
class Index erweitert Controller
{
public function index() { // 初始化RBAC Rbac::init(); // ... }
}
Im obigen Code wird die Rbac::init-Methode zur Initialisierung aufgerufen RBAC.
Führen Sie abschließend die Zugriffskontrolle im Controller durch, zum Beispiel:
use jiamingAdminRbacRbac;
class Index erweitert den Controller
{
public function index() { // 初始化RBAC Rbac::init(); // 判断用户权限 if (!Rbac::can('index/index/index')) { $this->error('您没有访问权限!'); } // ... }
}
Im obigen Code bestimmt die Rbac::can-Methode, ob der aktuelle Benutzer hat Zugriff auf Index/Berechtigungen für Index/Index.
Zusammenfassung
Berechtigungskontrolltechnologie ist ein wichtiger Aspekt in der modernen Webanwendungsentwicklung, um die Systemsicherheit und Benutzerdaten zu schützen. In ThinkPHP6 können verschiedene Berechtigungskontrollmethoden verwendet werden, einschließlich Authentifizierung und Autorisierung, RBAC usw. Die Auswahl einer geeigneten Berechtigungskontrollmethode basierend auf Anwendungsanforderungen und Entwicklungskosten kann die Entwicklungseffizienz und Anwendungssicherheit verbessern.
Das obige ist der detaillierte Inhalt vonVerwendung der Berechtigungskontrolltechnologie in ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!