Maison  >  Article  >  cadre php  >  Introduction détaillée à la méthode de définition des autorisations de l'équipe du projet ThinkPHP

Introduction détaillée à la méthode de définition des autorisations de l'équipe du projet ThinkPHP

PHPz
PHPzoriginal
2023-04-11 09:15:56848parcourir

ThinkPHP est un excellent framework PHP, largement utilisé dans le domaine du développement web. Dans le processus de mise en œuvre du projet, la définition des autorisations est un lien crucial. Cet article présentera en détail la méthode de définition des autorisations de l'équipe du projet ThinkPHP.

1. Comprendre les paramètres d'autorisation ThinkPHP

Le paramètre d'autorisation fait référence à l'attribution d'autorisations d'opération aux utilisateurs afin qu'ils puissent fonctionner conformément à l'étendue des autorisations. Dans le framework ThinkPHP, les paramètres d'autorisation peuvent être implémentés via RBAC (Role-Based Access Control). Le contrôle d'accès basé sur les rôles RBAC fait référence à un modèle de contrôle d'accès qui attribue des rôles aux utilisateurs et réaffecte des autorisations aux rôles. RBAC a les caractéristiques suivantes :

  1. autorise les autorisations sur les rôles, puis attribue des rôles aux utilisateurs pour une gestion facile ;
  2. Les utilisateurs doivent uniquement avoir des rôles pour disposer de toutes les autorisations détenues par les rôles ;
  3. Le système est facile à étendre ; et maintenir, avec une bonne évolutivité ;
  4. réalise la séparation des autorisations et de la logique métier, améliorant considérablement le taux de réutilisation du code et la sécurité des accès.

Deuxième étape de configuration des autorisations basées sur RBAC

Étape 1 Créer une table d'autorisations

  1. Créez une table d'autorisations dans la base de données, comprenant les champs ID, Nom, Titre et Statut
  2. Les champs ID et Nom sont des clés primaires et ; autorisations Identité ;
  3. le champ titre est le nom de l'autorisation ;
  4. le champ statut est l'état de l'autorisation, 1 signifie activé, 0 signifie désactivé.

Étape 2 Créez une table de rôles

  1. Créez une table de rôles dans la base de données, comprenant les champs identifiant, nom, titre et statut
  2. les champs id et nom sont la clé primaire et l'identification du rôle est
  3. le champ titre ; le nom du rôle ;
  4. Le champ d'état est le statut du rôle, 1 signifie activé, 0 signifie désactivé.

Étape 3 Créez une table utilisateur

  1. Créez une table utilisateur dans la base de données, comprenant les champs identifiant, nom d'utilisateur, mot de passe et statut
  2. le champ id est la clé primaire
  3. le nom d'utilisateur est le nom d'utilisateur ; est le mot de passe ;
  4. status représente le statut de l'utilisateur, 1 représente activé, 0 représente désactivé.
  5. Étape 4 Créez une table d'association de rôles utilisateur

Créez une table d'association de rôles utilisateur dans la base de données, comprenant les champs user_id et role_id ;
  1. user_id est l'ID utilisateur ;
  2. role_id est l'ID de rôle ;
  3. Étape 5 Créez une table d'association d'autorisations de rôle

Créez une table d'association d'autorisations de rôle dans la base de données, comprenant les champs role_id et Rule_id ;
  1. role_id est l'ID du rôle ;
  2. rule_id est l'ID d'autorisation ;
  3. Étape 6 Implémenter le contrôle des autorisations

Dans le projet ThinkPHP, la méthode pour implémenter le contrôle des autorisations est la suivante :

Définir le contrôleur commun CommonController dans le projet, qui peut implémenter le contrôle des autorisations pour tous les utilisateurs ; La classe implémente la vérification des autorisations ;
  1. Le contrôle des autorisations est effectué dans la classe CommonController, comme indiqué ci-dessous :
  2. public function _initialize(){
        if(!authcheck()){
    
            }
        }
    
    public function authcheck(){
        $auth=new Auth;
        if($auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME,session('uid'))){
            return true;
        }else{
            return false;
        }
    }
  3. Dans la classe Auth, la logique de vérification des autorisations est implémentée, comme indiqué ci-dessous :
class Auth {
    //检查权限
    public function check($name, $uid){
        if(in_array($uid, C('AUTH_SUPER_ADMIN'))){
            return true;
        }
        $infos=M('user')->field('role_id')->where('id='.$uid)->find();
        $role_id=$infos['role_id'];
        $rules=M('access')->where('role_id='.$role_id)->select();
        foreach($rules as $v){
            $rule_ids[]=$v['rule_id'];
        }
        $rules=M('rule')->where('id in ('.implode(',',$rule_ids).')')->select();
        foreach($rules as $r){
            $urls[]=$r['name'];
        }
        if(in_array($name,$urls)){
            return true;
        }else{
            return false;
        }
    }
}
    La logique implémentée par le code ci-dessus est Ajouter une vérification d’autorisation pour toutes les demandes d’action des utilisateurs. Si l'opération demandée par l'utilisateur nécessite un contrôle des autorisations, le validateur vérifie d'abord si l'utilisateur est un super administrateur. Si l'utilisateur est un super administrateur, la vérification est passée directement ; si l'utilisateur n'est pas un super administrateur, la liste des ID d'autorisation appartenant au rôle est trouvée (requête de la table d'association) en fonction de l'ID de rôle de l'utilisateur (requête de la table utilisateur), puis recherchez la liste de noms d'autorisation correspondante en fonction de la liste d'ID d'autorisation ; si le nom de l'opération demandée figure dans la liste de noms d'autorisation, la vérification est réussie, sinon la vérification de l'autorisation échoue ;
  1. 3. Résumé

Le paramètre d'autorisation est un élément indispensable du développement de sites Web. Cet article explique comment implémenter le contrôle des autorisations basé sur RBAC dans le projet ThinkPHP. Sur la base de cette idée, vous pouvez définir les autorisations d'opération correspondantes en fonction des besoins réels de votre projet.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn