Maison > cadre php > PensezPHP > Comment définir les autorisations de l'équipe du projet ThinkPHP

Comment définir les autorisations de l'équipe du projet ThinkPHP

WBOY
Libérer: 2023-05-27 20:55:26
avant
1174 Les gens l'ont consulté

1. Comprendre les paramètres d'autorisation ThinkPHP

Les paramètres d'autorisation font référence à l'attribution d'autorisations d'opération en fonction de la plage d'autorisations de l'utilisateur afin qu'il puisse effectuer les opérations correspondantes. 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) est un modèle de contrôle d'accès qui attribue des autorisations en fonction des rôles plutôt que des utilisateurs, et accorde aux utilisateurs des autorisations d'accès en attribuant des rôles. RBAC a les caractéristiques suivantes :

  1. Autoriser les autorisations sur les rôles, puis attribuer 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 ; le système est facile à développer et à entretenir, avec une bonne évolutivité ;

  3. 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.

  4. 2. Étapes de configuration des autorisations basées sur RBAC

Étape 1 Créer une table d'autorisations

Créez une table d'autorisations dans la base de données, comprenant les champs identifiant, nom, titre et statut

  1. id et The ; le champ de nom est la clé primaire et l'identification de l'autorisation ; le champ

  2. title est le nom de l'autorisation ; le champ

  3. est l'état de l'autorisation, 1 représente activé, 0 représente désactivé.

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

Créez une table de rôles dans la base de données, comprenant les champs identifiant, nom, titre et statut

  1. les champs id et nom sont la clé primaire et l'identification du rôle

     ;
  2. Le champ titre est le nom du rôle ; le champ

  3. status est le statut du rôle, 1 signifie activé, 0 signifie désactivé.

  4. Étape 3 Créez une table utilisateur

Créez une table utilisateur dans la base de données, comprenant les champs identifiant, nom d'utilisateur, mot de passe et statut

  1. le champ id est la clé primaire

  2. le nom d'utilisateur est ; le nom d'utilisateur ;

  3. password est le mot de passe ;

  4. statut 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 ; ID de rôle.

  2. Étape 5 Créez une table d'association d'autorisations de rôle

  3. 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 ;

role_id est l'ID du rôle ; ID d'autorisation.

  1. Étape 6 Implémenter le contrôle des autorisations

  2. Dans le projet ThinkPHP, la méthode pour implémenter le contrôle des autorisations est la suivante :
  3. Définissez le contrôleur commun CommonController dans le projet, qui peut implémenter le contrôle des autorisations pour tous les utilisateurs ;
  4. Créez la classe Auth pour implémenter la vérification des autorisations ;

Effectuez le contrôle des autorisations dans la classe CommonController, comme indiqué ci-dessous :

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;
    }
}
Copier après la connexion
  1. Dans la classe Auth, implémentez la logique de vérification des autorisations, comme indiqué ci-dessous :

  2. 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;
            }
        }
    }
    Copier après la connexion

    La logique implémentée par le code ci-dessus est d'ajouter une vérification des autorisations pour toutes les demandes d'opération des utilisateurs. Le validateur vérifiera d'abord si l'utilisateur dispose des privilèges de super-administrateur lorsqu'il demandera une opération nécessitant un contrôle d'autorisation. 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 ;

    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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal