Maison > cadre php > PensezPHP > Utilisation de la technologie de contrôle des autorisations dans ThinkPHP6

Utilisation de la technologie de contrôle des autorisations dans ThinkPHP6

WBOY
Libérer: 2023-06-21 16:51:07
original
2203 Les gens l'ont consulté

La technologie de contrôle des autorisations est de plus en plus importante dans le développement d'applications Web modernes. Il aide les développeurs à gérer les autorisations des utilisateurs, à contrôler l'accès aux données et à protéger la sécurité du système. ThinkPHP6 est un framework PHP puissant qui fournit une variété de technologies de contrôle des autorisations. Cet article en présentera quelques-unes.

  1. Authentification et autorisation

Dans ThinkPHP6, l'authentification et l'autorisation sont deux concepts différents. L'authentification fait généralement référence à la vérification de l'identité de l'utilisateur et à la détermination de sa légitimité. L'autorisation fait référence à l'octroi aux utilisateurs de l'autorisation d'accéder à des ressources spécifiques. ThinkPHP6 fournit le composant Auth pour implémenter les fonctions d'authentification et d'autorisation.

Le composant Auth doit définir la relation entre les utilisateurs, les rôles et les autorisations dans le fichier de configuration, et effectuer l'authentification et l'autorisation en appelant les méthodes de la classe Auth. Les étapes spécifiques sont les suivantes :

(1) Définir la relation

Définir la relation entre les utilisateurs, les rôles et les autorisations dans le fichier de configuration, par exemple :

'auth' => [

'auth_on' => true, // 认证开关
'auth_type' => 1, // 认证方式,1为实时认证;2为登录认证。
'auth_group' => 'auth_group', // 用户组数据表名
'auth_group_access' => 'auth_group_access', // 用户-用户组关系表
'auth_rule' => 'auth_rule', // 权限规则表
'auth_user' => 'admin_user', // 用户信息表
Copier après la connexion

],

Dans le code ci-dessus, le commutateur « auth_on » est défini sur true pour activer la fonction d'authentification, et le commutateur « auth_type » est défini sur 1 pour utiliser l'authentification en temps réel. Ensuite, les noms de quatre tables sont définis, à savoir les groupes d'utilisateurs, les relations utilisateur-groupe d'utilisateurs, les règles d'autorisation et les informations utilisateur.

(2) Authentifier les utilisateurs

Utilisez la méthode de vérification de la classe Auth pour l'authentification des utilisateurs. Par exemple :

utilisez think acadeAuth;

//Utilisateur authentifié
if (Auth::check($username, $password)) {

// 认证通过
Copier après la connexion

} else {

// 认证失败
Copier après la connexion

}

Dans le code ci-dessus, $username et $password sont respectivement le nom d'utilisateur et le mot de passe saisis par l'utilisateur. La méthode Auth::check renvoie le résultat de l'authentification si l'authentification réussit, elle renvoie vrai, sinon elle renvoie faux.

(3) Accès autorisé

Avant l'accès autorisé, le rôle et les autorisations de l'utilisateur actuellement connecté doivent être enregistrés dans la session. Par exemple :

utilisez think acadeSession;
utilisez think acadeRequest;
utilisez think acadeAuth;

// Enregistrez le rôle et les autorisations de l'utilisateur actuel
$user = Auth::user();
$groups = Auth::getGroups( $user ['id']);
$rules = Auth::getRules($user['id']);
Session::set('user_groups', $groups);
Session::set('user_rules' , $ Rules);

Ensuite, utilisez la méthode de vérification de la classe Auth dans le Controller pour déterminer si l'utilisateur dispose de droits d'accès. Par exemple :

utilisez think acadeSession;
utilisez think acadeRequest;
utilisez think acadeAuth;

// Déterminez les autorisations de l'utilisateur
$user = Session::get('user');
$groups = Session::get(' user_groups ');
$rules = Session::get('user_rules');
if (Auth::check(Request::path(), $groups, $rules)) {

// 用户有访问权限
Copier après la connexion

} else {

// 用户无访问权限
Copier après la connexion

}

Dans le code ci-dessus, Request::path() obtient l'adresse URL de la requête actuelle ; $groups et $rules sont respectivement les rôles et les autorisations de l'utilisateur actuel. La méthode Auth::check détermine si l'utilisateur dispose de droits d'accès. Si tel est le cas, elle renvoie vrai, sinon elle renvoie faux.

  1. RBAC

RBAC (Role-Based Access Control) est une technologie de contrôle d'accès basée sur les rôles qui sépare les rôles d'utilisateur des autorisations, et les utilisateurs obtiennent des autorisations via des rôles. ThinkPHP6 fournit le module d'extension RBAC, qui peut facilement implémenter un contrôle d'accès basé sur les rôles.

(1) Installez le module d'extension RBAC

Il est très pratique d'installer le module d'extension RBAC dans ThinkPHP6. Il vous suffit d'exécuter la commande suivante dans la ligne de commande :

composer require jiaming/admin-rbac

(. 2) Créez une table de base de données

Exécutez la commande suivante pour créer les tables de base de données requises :

php think migrate:run --seed /vendor/jiaming/admin-rbac/database/migrations

(3) Utilisation de RBAC

L'utilisation du module d'extension RBAC nécessite de définir des rôles, des autorisations, des ressources et des règles. Dans ThinkPHP6, les éléments de configuration liés au RBAC doivent être définis dans config/auth.php, par exemple :

'auth' => [

// ...
'auth_type' => 'rbac',
'rbac' => [
    'role_table' => 'admin_role',
    'user_table' => 'admin_user',
    'access_table' => 'admin_access',
    'node_table' => 'admin_node',
    'role_user_table' => 'admin_role_user',
],
Copier après la connexion

],

Dans le code ci-dessus, 'auth_type' est défini sur 'rbac'. , indiquant l'utilisation de la méthode d'autorisation RBAC et définissant le nom de la table de données pertinente.

Ensuite, vous devez initialiser RBAC dans le contrôleur, par exemple :

utilisez jiamingAdminRbacRbac;

class Index extends Controller
{

public function index()
{
    // 初始化RBAC
    Rbac::init();
    // ...
}
Copier après la connexion

}

Dans le code ci-dessus, la méthode Rbac::init est appelée pour initialiser RBAC.

Enfin, effectuez le contrôle d'accès dans le contrôleur, par exemple :

utilisez jiamingAdminRbacRbac;

class Index extends Controller
{

public function index()
{
    // 初始化RBAC
    Rbac::init();
    // 判断用户权限
    if (!Rbac::can('index/index/index')) {
        $this->error('您没有访问权限!');
    }
    // ...
}
Copier après la connexion

}

Dans le code ci-dessus, la méthode Rbac::can détermine si l'utilisateur actuel a accès à l'index/Autorisations pour index/index.

Résumé

La technologie de contrôle des autorisations est un aspect important du développement d'applications Web modernes pour protéger la sécurité du système et les données des utilisateurs. Dans ThinkPHP6, différentes méthodes de contrôle des autorisations peuvent être utilisées, notamment l'authentification et l'autorisation, RBAC, etc. Le choix d'une méthode de contrôle des autorisations appropriée en fonction des exigences des applications et des coûts de développement peut améliorer l'efficacité du développement et la sécurité des applications.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal