Heim >PHP-Framework >Denken Sie an PHP >So verwenden Sie die Berechtigungsauthentifizierung in thinkphp

So verwenden Sie die Berechtigungsauthentifizierung in thinkphp

WBOY
WBOYOriginal
2023-05-26 14:36:081077Durchsuche

Mit der kontinuierlichen Entwicklung des Internets steigt die Zahl der Website-Benutzer. Um die Sicherheit der Benutzerdaten besser zu verwalten und zu gewährleisten, ist die Autoritätsauthentifizierung zu einer der wesentlichen Funktionen jeder Website geworden. Unter den PHP-Frameworks ist ThinkPHP ein sehr beliebtes Framework und bietet auch vollständige Autoritätsauthentifizierungsfunktionen. In diesem Artikel wird daher ausführlich vorgestellt, wie ThinkPHP die Berechtigungsauthentifizierung verwendet.

1. Die Rolle der Berechtigungsauthentifizierung

Die Berechtigungsauthentifizierung wird hauptsächlich zur Steuerung von Berechtigungen für Benutzer in verschiedenen Rollen verwendet, um sicherzustellen, dass Benutzer nur auf die Ressourcen zugreifen können, für die sie eine Zugriffsberechtigung haben, und diese nicht über ihre Befugnisse hinaus verwenden können. Beispielsweise können Administratoren auf einer E-Commerce-Website alle Produktinformationen anzeigen und verwalten, während normale Benutzer Produktinformationen nur durchsuchen und diese nicht ändern oder löschen können.

2. So implementieren Sie die Autoritätsauthentifizierung

Das ThinkPHP-Framework bietet zwei Möglichkeiten zur Implementierung der Autoritätsauthentifizierung: RBAC und knotenbasierte Autoritätsauthentifizierung. RBAC (Role-Based Access Control), also die rollenbasierte Zugriffskontrolle, klassifiziert verschiedene Benutzer entsprechend ihrer Rollen. Die knotenbasierte Autoritätsauthentifizierung kontrolliert die Autorität über Knoten. Knoten können Controller, Betriebsmethoden usw. sein.

  1. RBAC

Um die Berechtigungsauthentifizierung über RBAC im Framework zu implementieren, müssen Sie die Auth-Klasse verwenden, die sich in ThinkPHPLibraryThink befindet. Die spezifischen Schritte lauten wie folgt:

(1) Erstellen Sie eine Knotentabelle und eine Rollentabelle und verknüpfen Sie Berechtigungsknoten mit Rollen. Das Erstellen einer Knotentabelle kann Controllern und Betriebsmethoden entsprechen, wie unten gezeigt:

Knotentabelle (think_node):

NameModule ControllerAktionpid1indexhomeindexindex02add StartseiteIndexHinzufügen1 3bearbeitenhomeindexbearbeiten14löschenhomeindexlöschen 1
Rollentabelle (think_role) :

id

Namenode_ids1admin1,2,3,42Benutzer 1class IndexController erweitert Controller{
(2 ) Verwenden Sie die Auth-Klasse im Controller für die Berechtigungsauthentifizierung. Der spezifische Code lautet wie folgt:
public function __construct()
{
    parent::__construct();
    //实例化Auth类
    $auth = new ThinkAuth();

    //获取当前用户的角色ID
    $uid = session('user_id');
    //获取当前请求的控制器和方法
    $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME;

    //进行权限认证
    if (!$auth->check($url, $uid)) {
        $this->error('您没有访问该页面的权限!');
    }
}

}

Im obigen Code werden die Rollen-ID des aktuellen Benutzers und der angeforderte Controller durch Instanziierung abgerufen die Auth-Klasse und -Methode und verwenden Sie dann die Methode $auth->check() für die Berechtigungsauthentifizierung. Schlägt die Überprüfung fehl, wird eine Fehlermeldung ausgegeben.

Knotenbasierte Berechtigungsauthentifizierung

Knotenbasierte Berechtigungsauthentifizierung kann mithilfe der vom Framework bereitgestellten Access-Klasse implementiert werden, die sich auch in ThinkPHPLibraryThink befindet. Die spezifischen Schritte sind wie folgt:
  1. (1) Verwenden Sie die Access-Klasse im Controller für die Berechtigungsauthentifizierung. Der spezifische Code lautet wie folgt:
class IndexController erweitert Controller

{

public function __construct()
{
    parent::__construct();
    //实例化Access类
    $access = new ThinkAccess();

    //获取当前用户的角色ID
    $uid = session('user_id');
    //获取当前请求的控制器和方法
    $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME;

    //定义权限节点列表
    $nodes = array(
        'Index/index',//首页
        'Index/add',//添加页面
        'Index/edit',//编辑页面
        'Index/delete',//删除操作
    );

    //进行权限认证
    if (!$access->check($nodes, $uid, $url)) {
        $this->error('您没有访问该页面的权限!');
    }
}

}

Im obigen Code um Instanziieren Sie die Access-Klasse und erhalten Sie die Rollen-ID des aktuellen Benutzers sowie den angeforderten Controller und die angeforderte Methode. Anschließend wird die Methode $access->check() zur Berechtigungsauthentifizierung verwendet. Jedes Element in der Berechtigungsknotenliste entspricht einem Knoten, nämlich einem Controller und einer Methode. Schlägt die Überprüfung fehl, wird eine Fehlermeldung ausgegeben.

3. Optimierung der Berechtigungsauthentifizierung

In praktischen Anwendungen müssen wir auch einige Optimierungen an der Berechtigungsauthentifizierung vornehmen, um die Wiederverwendbarkeit und Sicherheit des Codes zu verbessern. Die spezifischen Optimierungspunkte lauten wie folgt:

Einrichten eines öffentlichen Controllers

Sie können im Common-Modul des Frameworks einen öffentlichen Controller BaseController erstellen und die Berechtigungsüberprüfungslogik im Controller platzieren. Nachdem andere Controller diesen Controller geerbt haben, können sie diesen Teil des Codes wiederverwenden.
  1. Cache-Knoteninformationen

Bei der Berechtigungsauthentifizierung müssen die Knotentabelle und die Rollentabelle jedes Mal abgefragt werden, was sich auf die Systemleistung auswirkt. Daher können Abfrageergebnisse zwischengespeichert werden, um die Systemleistung zu verbessern. Sie können die vom Framework bereitgestellte Cache-Klasse verwenden, um die Abfrageergebnisse zwischenzuspeichern. Bei der nächsten Abfrage können Sie die zwischengespeicherten Ergebnisse direkt abrufen.
  1. Verschlüsselte Knoteninformationen

Um die Sicherheit zu verbessern, können wir Knoteninformationen verschlüsseln, um eine direkte Offenlegung von Knoteninformationen zu vermeiden. Sie können die vom Framework bereitgestellte Verschlüsselungsklasse verwenden, um die Knoten-ID zu verschlüsseln und die verschlüsselten Knoteninformationen in der Rollentabelle zu speichern.
  1. 4. Zusammenfassung
Die Berechtigungsauthentifizierung ist ein unverzichtbarer Bestandteil der Website-Entwicklung. Sie kann die Sicherheit der Benutzerdaten gewährleisten und die Benutzerverwaltung verbessern. Im ThinkPHP-Framework kann die Autoritätsauthentifizierungsfunktion mithilfe der Auth-Klasse und der Access-Klasse sehr bequem implementiert werden. Durch die Einleitung dieses Artikels können Sie die Schritte und Optimierungsmethoden für die Verwendung der Berechtigungsauthentifizierung in ThinkPHP verstehen, was meiner Meinung nach für Ihre Entwicklungsarbeit hilfreich sein wird.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Berechtigungsauthentifizierung in thinkphp. 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
Vorheriger Artikel:Wo ist die thinkphp-Homepage?Nächster Artikel:Wo ist die thinkphp-Homepage?