"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 강력한 인증을 위해 CASL을 React와 통합

강력한 인증을 위해 CASL을 React와 통합

2024-09-15에 게시됨
검색:462

Integrating CASL with React for Robust Authorization

소개

인증은 모든 웹 애플리케이션의 중요한 측면으로, 사용자가 상호 작용할 수 있는 기능과 데이터에만 액세스할 수 있도록 보장합니다. CASL("Capability-based Access Control"의 약자)은 유연하고 선언적인 방식으로 이 논리를 처리하기 위한 인기 있는 JavaScript 라이브러리입니다. 이 글에서는 CASL을 React 애플리케이션과 통합하여 효과적인 인증을 구현하는 도구를 제공하는 방법을 살펴보겠습니다.

전제조건

통합을 시작하기 전에 다음 사항을 숙지해야 합니다.

  • React에 대한 기본 이해.
  • React의 상태 관리에 익숙합니다.
  • JavaScript ES6에 대한 기본 지식.

1단계: CASL 설정

npm 설치 @casl/ability @casl/react

2단계: 능력 정의

능력은 사용자가 특정 리소스에 대해 수행할 수 있는 작업을 정의합니다. 능력 인스턴스를 생성하는 것부터 시작해 보겠습니다.

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;

이 예에서는 두 가지 능력을 정의합니다.

  • 모든 사용자가 기사를 읽을 수 있습니다.
  • 사용자는 자신이 작성한 기사만 업데이트할 수 있습니다.

3단계: CASL을 React와 통합

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);

4단계: 구성 요소 보호

이제 컨텍스트를 설정했으므로 @casl/react에서 제공하는 Can 구성 요소를 사용하여 구성 요소를 보호할 수 있습니다.

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

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

  return (
    

{article.title}

{article.content}

); }

여기서 '기사 편집' 버튼은 사용자에게 기사 업데이트 권한이 있는 경우에만 표시됩니다.

5단계: 무단 액세스 처리

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 구성요소를 사용하면 사용자가 보고 수행할 수 있는 내용을 쉽게 제어할 수 있어 앱의 보안과 사용자 경험이 모두 향상됩니다.

릴리스 선언문 이 기사는 https://dev.to/marwenshili/integrating-casl-with-react-for-robust-authorization-5ci?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]에 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3