Comment utiliser l'authentification par autorisation dans thinkphp
Avec le développement continu d'Internet, le nombre d'utilisateurs de sites Web augmente. Afin de mieux gérer et assurer la sécurité des données des utilisateurs, l'authentification par autorité est devenue l'une des fonctions essentielles de tout site Web. Parmi les frameworks PHP, ThinkPHP est un framework très populaire et fournit également des fonctions complètes d'authentification d'autorité. Ainsi, cet article présentera en détail comment ThinkPHP utilise l'authentification par autorisation.
1. Le rôle de l'authentification par autorisation
L'authentification par autorisation est principalement utilisée pour contrôler les autorisations des utilisateurs dans différents rôles afin de garantir que les utilisateurs ne peuvent accéder qu'aux ressources pour lesquelles ils ont l'autorisation d'accéder et ne peuvent pas les utiliser au-delà de leur autorité. Par exemple, dans un site Web de commerce électronique, les administrateurs peuvent afficher et gérer toutes les informations sur les produits, tandis que les utilisateurs ordinaires peuvent uniquement parcourir les informations sur les produits et ne peuvent pas les modifier ou les supprimer.
2. Comment implémenter l'authentification d'autorité
Le framework ThinkPHP propose deux façons d'implémenter l'authentification d'autorité : RBAC et l'authentification d'autorité basée sur les nœuds. RBAC (Role-Based Access Control), c'est-à-dire le contrôle d'accès basé sur les rôles, classe les différents utilisateurs en fonction de leurs rôles. L'authentification d'autorité basée sur les nœuds contrôle l'autorité via les nœuds. Les nœuds peuvent être des contrôleurs, des méthodes d'exploitation, etc.
- RBAC
Pour implémenter l'authentification des autorisations via RBAC dans le framework, vous devez utiliser la classe Auth, qui se trouve dans ThinkPHPLibraryThink. Les étapes spécifiques sont les suivantes :
(1) Créez une table de nœuds et une table de rôles, et associez les nœuds d'autorisation aux rôles. La création d'une table de nœuds peut correspondre aux contrôleurs et aux méthodes de fonctionnement. La table des rôles enregistre le nom du rôle et l'ID du nœud correspondant, comme indiqué ci-dessous :
Table des nœuds (think_node) :
id | name | module | .contrôleur | action | pid |
---|---|---|---|---|---|
1 | index | home | index | index | 0 |
2 | ajouter | accueil | index | ajouter | 1 |
3 | edit | home | index | edit | 1 |
4 | delete | home | index | delete | 1 |
Table des rôles (think_role) :
id | name | node_ids |
---|---|---|
1 | admin | 1,2,3,4 |
2 | user | 1 |
(2 ) Utilisez la classe Auth dans le contrôleur pour l'authentification des autorisations. Le code spécifique est le suivant :
class IndexController extends Controller
{
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('您没有访问该页面的权限!'); } }
}
Dans le code ci-dessus, l'ID de rôle de l'utilisateur actuel et le contrôleur demandé sont obtenus en instanciant. la classe et la méthode Auth, puis utilisez la méthode $auth->check() pour l'authentification des autorisations. Si la vérification échoue, un message d'erreur sera affiché.
- Authentification des autorisations basées sur les nœuds
L'authentification des autorisations basée sur les nœuds peut être implémentée à l'aide de la classe Access fournie par le framework, qui se trouve également dans ThinkPHPLibraryThink. Les étapes spécifiques sont les suivantes :
(1) Utilisez la classe Access dans le contrôleur pour l'authentification des autorisations. Le code spécifique est le suivant :
class IndexController extends 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('您没有访问该页面的权限!'); } }
}
Dans le code ci-dessus, par. en instanciant la classe Access, obtenez l'ID de rôle de l'utilisateur actuel ainsi que le contrôleur et la méthode demandés, puis la méthode $access->check() est utilisée pour l'authentification des autorisations. Chaque élément de la liste des nœuds d'autorisation correspond à un nœud, à savoir un contrôleur et une méthode. Si la vérification échoue, un message d'erreur sera affiché.
3. Optimisation de l'authentification des autorisations
Dans les applications pratiques, nous devons également apporter quelques optimisations à l'authentification des autorisations pour améliorer la réutilisabilité et la sécurité du code. Les points d'optimisation spécifiques sont les suivants :
- Établir un contrôleur public
Vous pouvez créer un contrôleur public BaseController dans le module Common du framework et placer la logique de vérification des autorisations dans le contrôleur. Une fois que d'autres contrôleurs ont hérité de ce contrôleur, ils peuvent réutiliser cette partie du code.
- Informations sur le nœud de cache
Dans l'authentification des autorisations, la table des nœuds et la table des rôles doivent être interrogées à chaque fois, ce qui affectera les performances du système. Par conséquent, les résultats des requêtes peuvent être mis en cache pour améliorer les performances du système. Vous pouvez utiliser la classe de cache fournie par le framework pour mettre en cache les résultats de la requête. La prochaine fois que vous effectuerez une requête, vous pourrez directement obtenir les résultats mis en cache.
- Informations cryptées sur les nœuds
Afin d'améliorer la sécurité, nous pouvons crypter les informations sur les nœuds pour éviter toute exposition directe des informations sur les nœuds. Vous pouvez utiliser la classe de chiffrement fournie par l'infrastructure pour chiffrer l'ID du nœud et enregistrer les informations du nœud chiffrées dans la table des rôles.
4. Résumé
L'authentification par autorisation est un élément indispensable du développement de sites Web. Elle peut garantir la sécurité des données des utilisateurs et améliorer la gestion des utilisateurs. Dans le framework ThinkPHP, en utilisant les classes Auth et Access, la fonction d'authentification d'autorité peut être implémentée de manière très pratique. Grâce à l'introduction de cet article, vous pouvez comprendre les étapes et les méthodes d'optimisation pour utiliser l'authentification par autorisation dans ThinkPHP, ce qui, je pense, sera utile pour votre travail de développement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



