Maison  >  Article  >  cadre php  >  Le secret de la fonction d'autorisation de Laravel : comment créer rapidement un système d'autorisation utilisateur sûr et fiable

Le secret de la fonction d'autorisation de Laravel : comment créer rapidement un système d'autorisation utilisateur sûr et fiable

WBOY
WBOYoriginal
2023-11-02 16:43:581042parcourir

Le secret de la fonction dautorisation de Laravel : comment créer rapidement un système dautorisation utilisateur sûr et fiable

Les secrets de la fonction d'autorisation de Laravel : Comment créer rapidement un système d'autorisation des utilisateurs sûr et fiable

Introduction : Avec le développement en plein essor d'Internet, la gestion des autorisations des utilisateurs devient de plus en plus importante. Dans un système d'autorisation des utilisateurs sûr et fiable, les opérations que chaque utilisateur peut effectuer doivent être strictement limitées pour protéger la sécurité et la confidentialité des données des utilisateurs. En tant que framework PHP populaire, Laravel fournit de puissantes fonctions d'autorisation. Cet article explique comment créer rapidement un système d'autorisation utilisateur sûr et fiable d'un point de vue pratique. Cet article comprend principalement les aspects suivants : la définition et la structure des autorisations, l'attribution et la gestion des autorisations, ainsi que la vérification et le contrôle des autorisations. Dans le même temps, cet article fournira également des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et appliquer les fonctions d'autorisation de Laravel.

1. Définition et structure des autorisations

Dans Laravel, nous pouvons utiliser le package d'extension Spatie Laravel Permissions pour gérer les autorisations des utilisateurs. Ce pack d'extension offre des capacités de gestion des autorisations flexibles et est facile à utiliser. Avant de l'utiliser, nous devons installer le package d'extension. L'installation peut être effectuée via Composer :

composer require spatie/laravel-permission

Une fois l'installation terminée, nous devons ajouter l'espace de noms du modèle d'autorisation et du modèle utilisateur au fichier de configuration de Laravel pour faciliter le chargement automatique. au moment de l'exécution. Ces modèles :

'providers' => [
    SpatiePermissionPermissionServiceProvider::class,
],
'aliases' => [
    'Permission' => SpatiePermissionModelsPermission::class,
    'Role' => SpatiePermissionModelsRole::class,
],

Ensuite, nous devons créer le fichier de migration de la table d'autorisations et exécuter la commande de migration :

php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="migrations"

php artisan migrate

Après avoir créé la table d'autorisations dans la base de données, nous devons définir la structure des autorisations. Les autorisations peuvent être divisées en plusieurs niveaux, comprenant généralement des modules, des fonctions, des opérations et d'autres dimensions. Nous pouvons définir la structure des autorisations en créant des groupes d'autorisations et des éléments d'autorisation. Un exemple est le suivant :

use SpatiePermissionModelsPermission;

$system = Permission::create(['name' => 'system']);
$userManagement = Permission::create(['name' => 'user management']);

$userCreate = Permission::create(['name' => 'user create']);
$userUpdate = Permission::create(['name' => 'user update']);
$userDelete = Permission::create(['name' => 'user delete']);

$system->syncChildren([$userManagement]);
$userManagement->syncChildren([$userCreate, $userUpdate, $userDelete]);

Le code ci-dessus crée un groupe d'autorisations nommé "système" et un élément d'autorisation nommé "gestion des utilisateurs". Ensuite, « système » est associé à « gestion des utilisateurs » via la méthode syncChildren(), et « gestion des utilisateurs » est associé à « création d'utilisateur », « mise à jour d'utilisateur » et « suppression d'utilisateur » pour former une structure d'autorisations.

2. Allocation et gestion des autorisations

Lors de la création d'un système d'autorisations utilisateur, nous devons attribuer les autorisations correspondantes à chaque utilisateur. Le package d'extension Laravel Permissions fournit un moyen pratique de manipuler les autorisations des utilisateurs. Nous pouvons attribuer des rôles aux utilisateurs via la méthode assignRole() du modèle utilisateur et attribuer des autorisations aux rôles via la méthode givePermissionTo() du rôle. Un exemple est le suivant :

use AppModelsUser;
use SpatiePermissionModelsRole;
use SpatiePermissionModelsPermission;

$user = User::find(1);
$role = Role::create(['name' => 'admin']);
$permission = Permission::findByName('user create');

$user->assignRole($role);
$role->givePermissionTo($permission);

Le code ci-dessus attribue un rôle nommé "admin" à l'utilisateur avec l'ID 1 et attribue l'autorisation "Créer un utilisateur" au rôle.

En plus d'attribuer des autorisations via du code, nous pouvons également gérer les autorisations des utilisateurs via l'interface de Laravel. Le package d'extension Spatie Permissions fournit un ensemble d'interfaces Web grâce auxquelles nous pouvons facilement gérer les utilisateurs, les rôles et les autorisations. Dans Laravel, nous pouvons publier des ressources liées à l'interface Web en exécutant la commande suivante :

php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="views"
php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="config"

Une fois l'exécution terminée, nous pouvons configurer le préfixe de routage et le middleware dans le fichier config/permissions.php, et puis passez Accédez au chemin /permissions pour accéder à l'interface de gestion des autorisations. config/permissions.php文件中配置路由前缀和中间件,然后通过访问/permissions路径即可进入权限管理界面。

三、权限验证与控制

在进行权限验证与控制时,Laravel Permissions扩展包同样提供了便捷的方式。我们可以通过authorize()方法对用户进行权限验证,以确定用户是否具备执行某个操作的权限。示例如下:

use IlluminateSupportFacadesAuth;

if (Auth::user()->can('user create')) {
    // 执行某个操作
} else {
    // 没有权限执行该操作
}

以上代码中,我们通过can()方法来验证当前用户是否具备"用户创建"的权限,如果具备权限则执行相应操作,否则提示用户没有权限。

除了在代码中进行权限验证,我们还可以在Laravel的路由中使用中间件来进行权限控制。我们可以通过定义中间件并将其应用到路由中,从而实现访问某个路由时的权限验证。示例如下:

use IlluminateSupportFacadesRoute;
use AppHttpMiddlewareCheckPermission;

Route::group(['middleware' => CheckPermission::class], function () {
    Route::get('/users', 'UserController@index');
    // 其他路由...
});

以上代码中,我们通过CheckPermission中间件对/users路由进行了权限验证。在CheckPermission中间件中,我们可以使用can()

3. Vérification et contrôle des autorisations

Lors de la vérification et du contrôle des autorisations, le package d'extension Laravel Permissions fournit également un moyen pratique. Nous pouvons utiliser la méthode authorize() pour vérifier les autorisations de l'utilisateur afin de déterminer si l'utilisateur a l'autorisation d'effectuer une opération. Un exemple est le suivant :

rrreee

Dans le code ci-dessus, nous utilisons la méthode can() pour vérifier si l'utilisateur actuel a l'autorisation "création d'utilisateur". S'il en a l'autorisation, effectuez l'opération. opération correspondante, sinon l'utilisateur sera informé qu'il n'a pas l'autorisation. 🎜🎜En plus d'effectuer la vérification des autorisations dans le code, nous pouvons également utiliser un middleware dans le routage Laravel pour le contrôle des autorisations. Nous pouvons implémenter la vérification des autorisations lors de l'accès à une route en définissant un middleware et en l'appliquant à la route. Un exemple est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons le middleware CheckPermission pour vérifier les autorisations sur la route /users. Dans le middleware CheckPermission, nous pouvons utiliser la méthode can() pour déterminer si l'utilisateur actuel dispose des autorisations correspondantes. Sinon, interrompez la requête et demandez en conséquence. 🎜🎜Conclusion : 🎜🎜Ce qui précède présente les étapes clés nécessaires pour créer un système d'autorisation des utilisateurs sûr et fiable. En utilisant la fonctionnalité d'autorisations de Laravel, nous pouvons facilement définir, attribuer et gérer les autorisations des utilisateurs, ainsi qu'effectuer la vérification et le contrôle des autorisations. Dans le même temps, cet article fournit des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et appliquer les fonctions d'autorisation de Laravel. J'espère que cet article pourra aider les lecteurs lors de la création d'un système d'autorisation des utilisateurs. 🎜

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