Maison > cadre php > PensezPHP > À propos de l'installation et de l'utilisation du plug-in d'authentification Thinkphp 6.0 Think-authz

À propos de l'installation et de l'utilisation du plug-in d'authentification Thinkphp 6.0 Think-authz

藏色散人
Libérer: 2020-11-10 14:35:38
avant
3400 Les gens l'ont consulté
Ce qui suit est

Thinkphp La colonne tutoriel présentera le plug-in de certification ThinkPHP 6.0 Think-Authz, j'espère qu'il sera utile aux amis dans le besoin !

Installation

Cette extension nécessite PHP 7.1+ et ThinkPHP 6.0+, pour TP 5.1, veuillez utiliser Think-Casbin.

Utilisez

pour installer : composer

composer require casbin/think-authz
Copier après la connexion
pour enregistrer le service et ajoutez :

return [
    // ...

    tauthz\TauthzService::class,];
Copier après la connexion
service.php au fichier public global de l'application pour publier les fichiers de configuration et les fichiers de migration de base de données :

php think tauthz:publish
Copier après la connexion
Cela générera automatiquement les fichiers

et config/tauthz-rbac-model.conf. config/tauthz.php

Exécutez l'outil de migration (

Assurez-vous que les informations de configuration de la base de données sont correctes) :

php think migrate:run
Copier après la connexion
Cela créera une table nommée

. rules

Utilisation

Démarrage rapide

Après une installation réussie, vous pouvez l'utiliser comme ceci :

use tauthz\facade\Enforcer;
// adds permissions to a user
Enforcer::addPermissionForUser('eve', 'articles', 'read');
// adds a role for a user.
Enforcer::addRoleForUser('eve', 'writer');
// adds permissions to a rule
Enforcer::addPolicy('writer', 'articles','edit');
Copier après la connexion
Vous pouvez vérifier si un utilisateur dispose d'une certaine autorisation :

// to check if a user has permission
if (Enforcer::enforce("eve", "articles", "edit")) {
    // permit eve to edit articles} else {
    // deny the request, show an error}
Copier après la connexion

Utiliser l'API Enforcer

qui fournit un

très riche pour faciliter diverses API opérations : Policy

Obtenir tous les rôles :

Enforcer::getAllRoles(); // ['writer', 'reader']
Copier après la connexion
Obtenir les règles d'autorisation pour tous les rôles :

Enforcer::getPolicy();
Copier après la connexion
Obtenir tous les rôles d'un utilisateur :

Enforcer::getRolesForUser('eve'); // ['writer']
Copier après la connexion
Obtenir tous les utilisateurs de un certain rôle :

Enforcer::getUsersForRole('writer'); // ['eve']
Copier après la connexion
Déterminer si un utilisateur a un certain rôle :

Enforcer::hasRoleForUser('eve', 'writer'); // true or false
Copier après la connexion
Ajouter un rôle à un utilisateur :

Enforcer::addRoleForUser('eve', 'writer');
Copier après la connexion
Donner des autorisations à un utilisateur ou un rôle :

// to user
Enforcer::addPermissionForUser('eve', 'articles', 'read');
// to role
Enforcer::addPermissionForUser('writer', 'articles','edit');
Copier après la connexion
Supprimer le rôle d'un utilisateur :

Enforcer::deleteRoleForUser('eve', 'writer');
Copier après la connexion
Supprimer tous les rôles d'un utilisateur :

Enforcer::deleteRolesForUser('eve');
Copier après la connexion
Supprimer un seul rôle :

Enforcer::deleteRole('writer');
Copier après la connexion
Supprimer une autorisation :

Enforcer::deletePermission('articles', 'read'); 
// returns false if the permission does not exist (aka not affected).
Copier après la connexion
Supprimer les autorisations pour un utilisateur ou un rôle :

Enforcer::deletePermissionForUser('eve', 'articles', 'read');
Copier après la connexion
Supprimer toutes les autorisations pour un utilisateur ou un rôle :

// to user
Enforcer::deletePermissionsForUser('eve');
// to role
Enforcer::deletePermissionsForUser('writer');
Copier après la connexion
Obtenir toutes les autorisations pour un utilisateur ou un rôle :

Enforcer::getPermissionsForUser('eve'); 
// return array
Copier après la connexion
Déterminer si un utilisateur dispose d'une certaine autorisation

Enforcer::hasPermissionForUser('eve', 'articles', 'read');  
// true or false
Copier après la connexion
Plus

Veuillez vous référer à l'API Casbin (https://casbin.org/docs/en/management-api). API

Utilisation d'un middleware

Ce package d'extension est livré avec un

middleware :tauthzmiddlewareBasic::class

Route::get('news/:id','News/Show')
    ->middleware(\tauthz\middleware\Basic::class, ['news', 'read']);
Copier après la connexion

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:learnku.com
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