Heim >PHP-Framework >Denken Sie an PHP >So verwenden Sie die Berechtigungsauthentifizierung in thinkphp
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.
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):
Controller | Aktion | pid | 1 | ||
---|---|---|---|---|---|
index | index | 0 | 2 | add | |
Index | Hinzufügen | 1 | 3 | bearbeiten | |
index | bearbeiten | 1 | 4 | löschen | |
index | löschen | 1 | Rollentabelle (think_role) : |
id
1 | ||
---|---|---|
2 | Benutzer | |
(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:{
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.
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.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!