Heim > PHP-Framework > Denken Sie an PHP > Verwendung der Berechtigungskontrolltechnologie in ThinkPHP6

Verwendung der Berechtigungskontrolltechnologie in ThinkPHP6

WBOY
Freigeben: 2023-06-21 16:51:07
Original
2203 Leute haben es durchsucht

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.

  1. Authentifizierung und Autorisierung

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', // 用户信息表
Nach dem Login kopieren

],

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)) {

// 认证通过
Nach dem Login kopieren

} else {

// 认证失败
Nach dem Login kopieren

}

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)) {

// 用户有访问权限
Nach dem Login kopieren

} else {

// 用户无访问权限
Nach dem Login kopieren

}

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.

  1. RBAC

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',
],
Nach dem Login kopieren

],

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();
    // ...
}
Nach dem Login kopieren

}

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('您没有访问权限!');
    }
    // ...
}
Nach dem Login kopieren

}

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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage