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 :
Autoriser les autorisations sur les rôles, puis attribuer des rôles aux utilisateurs pour une gestion facile
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é ;
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.
É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
id et The ; le champ de nom est la clé primaire et l'identification de l'autorisation ; le champ
title est le nom de l'autorisation ; le champ
est l'état de l'autorisation, 1 représente activé, 0 représente désactivé.
É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
les champs id et nom sont la clé primaire et l'identification du rôle
;Le champ titre est le nom du rôle ; le champ
status est le statut du rôle, 1 signifie activé, 0 signifie désactivé.
É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
le champ id est la clé primaire
le nom d'utilisateur est ; le nom d'utilisateur ;
password est le mot de passe ;
statut représente le statut de l'utilisateur, 1 représente activé, 0 représente désactivé.
É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 ;
user_id est l'ID utilisateur ; ID de rôle.
É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 ;
role_id est l'ID du rôle ; ID d'autorisation.
Étape 6 Implémenter le contrôle des autorisations
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; } }
Dans la classe Auth, implémentez la logique de vérification des autorisations, 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 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!