"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Intégration de CASL à React pour une autorisation robuste

Intégration de CASL à React pour une autorisation robuste

Publié le 2024-09-15
Parcourir:986

Integrating CASL with React for Robust Authorization

Introduction

L'autorisation est un aspect essentiel de toute application Web, garantissant que les utilisateurs n'ont accès qu'aux fonctionnalités et aux données avec lesquelles ils sont autorisés à interagir. CASL (pour « Capability-based Access Control ») est une bibliothèque JavaScript populaire permettant de gérer cette logique de manière flexible et déclarative. Dans cet article, nous expliquerons comment intégrer CASL à une application React, en vous fournissant les outils nécessaires pour mettre en œuvre une autorisation efficace.

Conditions préalables

Avant de vous lancer dans l'intégration, vous devez connaître les éléments suivants :

  • Compréhension de base de React.
  • Familiarité avec la gestion d'état dans React.
  • Connaissance de base de JavaScript ES6 .

Étape 1 : Configuration de la CASL

npm install @casl/ability @casl/react

Étape 2 : Définir les capacités

Les capacités définissent les actions qu'un utilisateur peut effectuer sur des ressources particulières. Commençons par créer une instance de capacité.

import { Ability } from '@casl/ability';

const defineAbilitiesFor = (user) => {
  return new Ability([
    {
      action: 'read',
      subject: 'Article',
    },
    {
      action: 'update',
      subject: 'Article',
      conditions: { authorId: user.id },
    },
  ]);
};

export default defineAbilitiesFor;

Dans cet exemple, nous définissons deux capacités :

  • Tous les utilisateurs peuvent lire les articles.
  • Les utilisateurs peuvent uniquement mettre à jour les articles dont ils sont les auteurs.

Étape 3 : Intégrer CASL à React

Pour utiliser ces capacités dans vos composants React, vous pouvez créer un contexte pour fournir l'instance de capacité dans toute votre application.

import React, { createContext, useContext } from 'react';
import { Ability } from '@casl/ability';

const AbilityContext = createContext();

export const AbilityProvider = ({ children, user }) => {
  const ability = defineAbilitiesFor(user);

  return (
    
      {children}
    
  );
};

export const useAbility = () => useContext(AbilityContext);

Étape 4 : Protection des composants

Maintenant que vous avez configuré le contexte, vous pouvez protéger vos composants à l'aide du composant Can fourni par @casl/react.

import { Can } from '@casl/react';

function Article({ article }) {
  const ability = useAbility();

  return (
    

{article.title}

{article.content}

); }

Ici, le bouton « Modifier l'article » ne sera visible que si l'utilisateur a l'autorisation de mettre à jour l'article.

Étape 5 : Gérer les accès non autorisés

CASL peut également aider à gérer ce qui se passe lorsqu'un utilisateur tente une action non autorisée. Cela peut être fait en vérifiant les capacités des gestionnaires d'événements ou des appels d'API.

const handleEdit = () => {
  if (!ability.can('update', article)) {
    alert('You are not allowed to edit this article!');
    return;
  }

  // proceed with editing logic
};

Conclusion

L'intégration de CASL à React fournit un moyen propre et déclaratif de gérer les autorisations dans vos applications. En définissant des capacités et en utilisant le composant Can, vous pouvez facilement contrôler ce que les utilisateurs peuvent voir et faire, améliorant ainsi à la fois la sécurité et l'expérience utilisateur de votre application.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/marwenshili/integrating-casl-with-react-for-robust-authorization-5ci?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3