인증은 모든 웹 애플리케이션의 중요한 측면으로, 사용자가 상호 작용할 수 있는 기능과 데이터에만 액세스할 수 있도록 보장합니다. CASL("Capability-based Access Control"의 약자)은 유연하고 선언적인 방식으로 이 논리를 처리하기 위한 인기 있는 JavaScript 라이브러리입니다. 이 글에서는 CASL을 React 애플리케이션과 통합하여 효과적인 인증을 구현하는 도구를 제공하는 방법을 살펴보겠습니다.
통합을 시작하기 전에 다음 사항을 숙지해야 합니다.
npm 설치 @casl/ability @casl/react
능력은 사용자가 특정 리소스에 대해 수행할 수 있는 작업을 정의합니다. 능력 인스턴스를 생성하는 것부터 시작해 보겠습니다.
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;
이 예에서는 두 가지 능력을 정의합니다.
React 구성요소에서 이러한 기능을 사용하려면 앱 전체에 기능 인스턴스를 제공하는 컨텍스트를 생성할 수 있습니다.
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);
이제 컨텍스트를 설정했으므로 @casl/react에서 제공하는 Can 구성 요소를 사용하여 구성 요소를 보호할 수 있습니다.
import { Can } from '@casl/react'; function Article({ article }) { const ability = useAbility(); return (); }{article.title}
{article.content}
여기서 '기사 편집' 버튼은 사용자에게 기사 업데이트 권한이 있는 경우에만 표시됩니다.
CASL은 사용자가 승인되지 않은 작업을 시도할 때 발생하는 상황을 관리하는 데도 도움이 됩니다. 이는 이벤트 핸들러 또는 API 호출의 기능을 확인하여 수행할 수 있습니다.
const handleEdit = () => { if (!ability.can('update', article)) { alert('You are not allowed to edit this article!'); return; } // proceed with editing logic };
CASL을 React와 통합하면 애플리케이션에서 인증을 관리하는 깔끔하고 선언적인 방법이 제공됩니다. 기능을 정의하고 Can 구성요소를 사용하면 사용자가 보고 수행할 수 있는 내용을 쉽게 제어할 수 있어 앱의 보안과 사용자 경험이 모두 향상됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3