Avec le développement continu des applications Internet, la sécurité des applications Web est devenue une question de plus en plus importante. Comment assurer la sécurité des programmes est devenu un problème auquel sont confrontés tous les développeurs. La technologie d'autorisation d'authentification est une solution populaire qui fournit un contrôle d'accès basé sur les rôles.
Dans cet article, nous explorerons comment utiliser la technologie d'autorisation d'authentification dans ThinkPHP6. Tout d’abord, nous devons clarifier le principe de fonctionnement et les concepts fondamentaux de l’autorisation Auth.
Le cœur de l'autorisation Auth est le contrôle d'accès basé sur les rôles, qui est principalement divisé en trois étapes suivantes :
1.1 Créer un rôle
Avant d'utiliser l'autorisation Auth, vous devez d'abord créer un rôle. Un rôle est un ensemble d'autorisations qui définit l'accès dont dispose un utilisateur.
1.2 Attribuer des autorisations aux rôles
Après avoir créé un rôle, vous devez attribuer les autorisations correspondantes au rôle. Les autorisations font référence à l'autorisation des modules fonctionnels ou des données accessibles.
1.3 Attribuer des rôles aux utilisateurs
Enfin, les rôles doivent être attribués aux utilisateurs. Un utilisateur peut se voir attribuer plusieurs rôles, qui déterminent les droits d'accès dont il dispose.
Dans le workflow d'autorisation d'authentification, utilisez le contrôleur d'accès pour implémenter le contrôle d'accès. Le contrôleur d'accès est utilisé pour vérifier si l'utilisateur a des droits d'accès à l'URL actuelle. Si l'utilisateur a des droits d'accès, il peut continuer à accéder au contenu concerné.
Maintenant que nous avons compris comment fonctionne l'autorisation d'authentification, nous expliquerons ci-dessous en détail comment utiliser la technologie d'autorisation d'authentification dans ThinkPHP6. Supposons que nous ayons deux types d'utilisateurs en arrière-plan : les administrateurs et les utilisateurs ordinaires. Les administrateurs peuvent accéder à tous les modules de contenu, tandis que les utilisateurs ordinaires ne peuvent accéder qu'à certains contenus.
2.1 Installer et configurer le plug-in Auth
Avant d'utiliser la technologie Auth, nous devons d'abord installer et configurer le plug-in Auth. Dans ThinkPHP6, le plug-in Auth a été intégré au framework et peut être utilisé avec une configuration simple.
Tout d'abord, créez le fichier de configuration auth.php dans le répertoire config. Les informations de configuration sont les suivantes :
return [ // 用户认证的类名,不设置则使用核心集成认证方法 'auth' => AppAuth::class, // 不需要认证的路由,可允许所有用户访问的路由 'no_auth' => ['index/index'], // 需要认证且验证失败时跳转的地址 'fail_url' => 'index/login', ];
2.2 Créer un modèle utilisateur
Créer un modèle utilisateur, le code pertinent est le suivant :
<?php namespace appmodel; use thinkModel; class User extends Model { // 定义角色关联 public function roles() { return $this->belongsToMany(Role::class, 'user_role'); } // 判断用户是否有权限访问当前操作 public function hasPermission($permission) { foreach ($this->roles as $role) { if ($role->checkPermission($permission)) { return true; } } return false; } }
2.3 Créer un modèle de rôle
Créer un modèle de rôle, associé Le code est le suivant :
<?php namespace appmodel; use thinkModel; class Role extends Model { // 定义权限关联 public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission'); } // 检查角色是否有权限访问当前操作 public function checkPermission($permission) { foreach ($this->permissions as $item) { if ($item->name == $permission) { return true; } } return false; } }
2.4 Créer un modèle d'autorisation
Créer un modèle d'autorisation, le code pertinent est le suivant :
<?php namespace appmodel; use thinkModel; class Permission extends Model { }
2.5 Créer une table de base de données
Créer une table de base de données, y compris la table utilisateur, table des rôles, table des autorisations et deux tables relationnelles user_role et role_permission .
Structure liée à la table utilisateur :
Field | Type | Comment |
---|---|---|
id | int | |
username | varchar(20) | |
mot de passe | varchar(255) | |
created_at | datetime | |
updated_at | datetime |
role table Structures associées :
Field | Type | Commentaire |
---|---|---|
id | int | |
name | varchar(20) | |
created_at | datetime | |
updated_at | datetime |
permission Structure liée à la table :
Field | Type | Comment |
---|---|---|
id | int | |
name | varchar(20) |
structure liée à la table user_role :
Field | Type | Commentaire |
---|---|---|
id | int | |
user_id | int | |
role_id | int |
Structure associée à la table Role_permission :
Field | Type | Comment |
---|---|---|
id | int | |
role_id | int | |
permission_id | int |
2.6 Implémentation du code du contrôleur
Ce qui suit utilise un exemple de contrôleur pour illustrer comment implémenter l'autorisation d'authentification. L'exemple de code du contrôleur est le suivant :
<?php namespace appdmincontroller; use appmodelUser; use thinkController; class Index extends Controller { // 后台首页 public function index() { // 获取当前登录用户 $user_id = session('user_id'); $user = User::find($user_id); // 判断用户是否有权限访问当前操作 if (!$user->hasPermission($this->request->path())) { $this->error('无权访问'); } return view(); } // 登录页面 public function login() { return view(); } // 处理登录请求 public function do_login() { $username = $this->request->param('username'); $password = $this->request->param('password'); // 根据用户名查询用户 $user = User::where('username', $username)->find(); // 验证用户密码 if ($user && password_verify($password, $user->password)) { // 记录登录状态 session('user_id', $user->id); // 跳转到后台首页 $this->redirect('index/index'); } else { $this->error('登录失败'); } } // 退出登录 public function logout() { session('user_id', null); $this->redirect('index/login'); } }
Dans cet article, nous avons présenté le principe de fonctionnement, les concepts de base et la mise en œuvre de l'application de l'autorisation Auth dans ThinkPHP6. L'utilisation de la technologie d'autorisation Auth peut améliorer efficacement la sécurité des applications Web et fournir aux utilisateurs des services plus sécurisés et plus fiables. Lors du processus de développement ultérieur d'applications Web, nous devons également prêter attention aux garanties de sécurité et utiliser au mieux les technologies de sécurité existantes.
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!