À 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 :
2. Définir 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' => [] ];
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
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 { // 返回无权访问页面 }
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
<!-- 如果用户有'user'权限,则显示下面的按钮 --> @can('user') <button type="button" class="btn btn-sm btn-primary">操作</button> @endcan4. 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.
protected $table = [ 'auth' => 'auth', 'users' => 'users', 'roles' => 'roles', 'permissions' => 'permissions', 'role_permissions' => 'role_permission' ];
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!