Maison >cadre php >PensezPHP >Comment utiliser ThinkPHP6 pour implémenter le contrôle des autorisations

Comment utiliser ThinkPHP6 pour implémenter le contrôle des autorisations

WBOY
WBOYoriginal
2023-06-20 19:55:423256parcourir

À mesure qu'Internet se développe de plus en plus, de nombreux sites Web doivent contrôler les autorisations des utilisateurs. Le contrôle des autorisations peut protéger la sécurité du système et empêcher le personnel non autorisé d'accéder aux ressources du système, ce qui est très important dans les applications commerciales. Lors du développement d'applications utilisant PHP, le framework ThinkPHP fournit une solution simple.

Le framework ThinkPHP6 offre aux utilisateurs des capacités de contrôle d'autorisation basées sur RBAC (contrôle d'accès basé sur les rôles). Cet article explique comment utiliser ThinkPHP6 pour implémenter le contrôle des autorisations, notamment comment définir les autorisations, comment utiliser les autorisations dans les contrôleurs et les vues, et comment stocker les informations de contrôle des autorisations dans la base de données.

1. Concepts de base

Avant de présenter comment implémenter le contrôle des autorisations, nous devons comprendre plusieurs concepts de base :

  1. Rôle ( Rôle) : Les utilisateurs ayant les mêmes fonctions et responsabilités se voient attribuer un rôle pour faciliter la gestion de leurs autorisations.
  2. Permission : définit les ressources et les opérations auxquelles les utilisateurs peuvent accéder dans le système, y compris les contrôleurs, les méthodes et les vues.
  3. Relation Rôle-Permission : Associez des rôles à leurs autorisations correspondantes pour faciliter la gestion des autorisations des utilisateurs ayant un certain rôle.

2. Définir les autorisations

  1. Configurer les autorisations

Dans ThinkPHP6, configuration de toutes les autorisations les informations sont stockées dans le fichier appcontroller dmin.php. Il existe deux types d'autorisations dans le fichier de configuration : les autorisations publiques et les autorisations privées.

Les autorisations publiques font référence aux ressources et opérations auxquelles tout utilisateur peut accéder, comme la page d'accueil du système, etc. Les autorisations privées font référence aux ressources et aux opérations auxquelles seuls les utilisateurs disposant de rôles ou d'autorisations spécifiques peuvent accéder.

Ajouter toutes les autorisations publiques au fichier dmin.php de l'appcontroller :

return [
    // 公共权限
    'public' => [
        'index/index',
        'index/home'
    ],

    // 私有权限
    'private' => []
];
  1. Configurer les autorisations privées

Pour les autorisations privées autorisations, nous devons ajouter ces autorisations dans le groupe d'autorisations privées du fichier appcontroller dmin.php.

Par exemple, on peut ajouter une permission nommée "user" qui permettra d'accéder à la méthode getUserList dans le contrôleur AdminController :

// 私有权限
'private' => [
    'user' => [
        'AdminController/getUserList'
    ]
]

3. Dans le contrôleur et les Permissions utilisées dans les vues

  1. Vérifier les autorisations

Lorsqu'un utilisateur accède à une page qui nécessite des autorisations spécifiques, nous devons vérifier les autorisations de l'utilisateur. Dans ThinkPHP6, nous pouvons utiliser la méthode de vérification fournie par la classe Auth pour vérifier si l'utilisateur dispose d'autorisations spécifiques.

Par exemple, nous pouvons vérifier si l'utilisateur dispose de l'autorisation nommée "utilisateur" en utilisant la méthode suivante :

if (Auth::check('user')) {
    // 执行用户有权访问的操作
} else {
    // 返回无权访问页面
}
  1. Vérifier le rôle de l'utilisateur actuel#🎜🎜 ## 🎜🎜#
  2. Lors de l'exécution de certaines opérations, nous devons connaître le rôle de l'utilisateur actuel et nous comporter en conséquence en fonction de son rôle. Dans ThinkPHP6, nous pouvons utiliser la méthode getRole dans la classe Auth pour obtenir le rôle de l'utilisateur actuel.

Par exemple, nous pouvons utiliser la méthode suivante pour obtenir le rôle de l'utilisateur actuel :

$role = Auth::getRole();

Utiliser les autorisations en vue
    #🎜🎜 #
  1. Nous pouvons également utiliser les contrôles d'autorisation dans la vue pour afficher ou masquer certains éléments. Par exemple, dans le modèle de lame, nous pouvons utiliser la directive can pour vérifier si l'utilisateur actuel dispose d'une autorisation spécifique.
Exemple :

<!-- 如果用户有'user'权限,则显示下面的按钮 -->
@can('user')
    <button type="button" class="btn btn-sm btn-primary">操作</button>
@endcan

4. Stockez les informations de contrôle des autorisations dans la base de données

Afin de rendre le contrôle des autorisations plus flexible, nous pouvons stocker les informations d'autorisation dans la base de données pour une gestion et une modification faciles. ThinkPHP6 fournit la classe Auth, qui peut facilement lire et vérifier les informations d'autorisation de la base de données.

Lors de la définition des autorisations dans la base de données, nous devons créer quatre tables :

Table des utilisateurs (utilisateurs) : stocke les informations sur l'utilisateur, y compris l'ID utilisateur, le nom d'utilisateur et mot de passe, etc.

    Table des rôles (rôles) : stocke les informations sur le rôle, y compris l'ID du rôle et le nom du rôle.
  1. Tableau des autorisations (autorisations) : stocke les informations d'autorisation, y compris l'ID d'autorisation et le nom de l'autorisation.
  2. Table d'autorisations de rôle (role_permission) : stocke les informations sur la relation entre les rôles et les autorisations.
  3. Dans la classe Auth, nous utilisons la méthode suivante pour définir le nom de la table à vérifier :
  4. protected $table = [
        'auth' => 'auth',
        'users' => 'users',
        'roles' => 'roles',
        'permissions' => 'permissions',
        'role_permissions' => 'role_permission'
    ];
Ce qui précède est l'ensemble du processus d'utilisation de ThinkPHP6 pour implémenter contrôle des autorisations. Grâce aux opérations ci-dessus, nous pouvons facilement mettre en œuvre un contrôle d'autorisation basé sur RBAC et améliorer la sécurité et la contrôlabilité du 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