A autorização é um aspecto crítico de qualquer aplicativo da web, garantindo que os usuários tenham acesso apenas aos recursos e dados com os quais têm permissão para interagir. CASL (significa "Capability-based Access Control") é uma biblioteca JavaScript popular para lidar com essa lógica de maneira flexível e declarativa. Neste artigo, veremos como integrar CASL a um aplicativo React, fornecendo as ferramentas para implementar uma autorização eficaz.
Antes de mergulhar na integração, você deve estar familiarizado com o seguinte:
instalar npm @casl/capacidade @casl/react
As habilidades definem quais ações um usuário pode executar em recursos específicos. Vamos começar criando uma instância de habilidade.
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;
Neste exemplo, definimos duas habilidades:
Para usar essas habilidades em seus componentes React, você pode criar um contexto para fornecer a instância de habilidade em todo o seu aplicativo.
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);
Agora que configurou o contexto, você pode proteger seus componentes usando o componente Can fornecido por @casl/react.
import { Can } from '@casl/react'; function Article({ article }) { const ability = useAbility(); return (); }{article.title}
{article.content}
Aqui, o botão "Editar Artigo" só estará visível se o usuário tiver permissão para atualizar o artigo.
CASL também pode ajudar a gerenciar o que acontece quando um usuário tenta uma ação não autorizada. Isso pode ser feito verificando habilidades em manipuladores de eventos ou chamadas de API.
const handleEdit = () => { if (!ability.can('update', article)) { alert('You are not allowed to edit this article!'); return; } // proceed with editing logic };
Integrar CASL com React fornece uma maneira limpa e declarativa de gerenciar autorização em seus aplicativos. Ao definir habilidades e usar o componente Can, você pode controlar facilmente o que os usuários podem ver e fazer, melhorando a segurança e a experiência do usuário do seu aplicativo.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3