Maison  >  Article  >  cadre php  >  Utilisation de la technologie d'autorisation Auth dans ThinkPHP6

Utilisation de la technologie d'autorisation Auth dans ThinkPHP6

WBOY
WBOYoriginal
2023-06-20 17:50:312101parcourir

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.

  1. Comment fonctionne 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é.

  1. Utiliser la technologie d'autorisation d'authentification dans ThinkPHP6

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');
    }
}
  1. Résumé

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!

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