비트 권한 시스템 구축

승인되지 않은 작업과 잠재적인 데이터 손실로부터 애플리케이션을 보호하려면 권한이 어디에나 있으며 매우 중요합니다.
권한을 처리하고 결합하는 시스템은 압도적이고 너무 복잡할 수 있지만 🔐 Bitwise Permission System이라는 더 좋은 방법이 있습니다!
  • 🛠 How to build your own
  • 📍 Where can you use them

  • 🛠 직접 만드는 방법



    JavaScript로 이 작업을 수행할 것이지만 시스템은 거의 모든 가능한 언어로 되어 있습니다.

    연산자



    비트 연산자에 대해 간단히 살펴보겠습니다. 여기서 간단한 개요를 알려드리겠습니다.

    비트는 0 또는 1 단위입니다. 컴퓨터가 처리하고 저장할 수 있는 가장 작은 데이터 단위입니다.
    예를 들어 숫자 3을 110 비트로 변환할 수 있습니다. 나는 비트에 대해 더 깊이 들어가지 않을 것입니다. 인터넷에는 많은 리소스가 있습니다.


    예시
    운영자
    이름
    설명


    1100 & 0100 = 0100
    &
    그리고
    둘 다 1이면 비트를 1로 설정

    1100(파이프) 1000 = 1100
    (파이프)
    또는
    하나가 1이면 비트를 1로 설정

    0100 1010 = 1110
    ^^
    XOR
    하나만 1이면 비트를 1로 설정

    ~0110 = 1001
    ~
    아니다
    각 비트 반전


    우리는 본사의 다른 영역에 사람이 들어갈 수 있는지 확인하는 작은 프로젝트를 만들 예정입니다.

    먼저 각 영역에 대한 권한을 만듭니다.

    const DEFAULT = 1 // 0001
    const LABORATORY = 2 // 0010
    const CAFE = 4 // 0100
    const PARK = 8 // 1000
    


    다음으로 세 명의 서로 다른 사용자를 만들고 고유한 권한을 부여해 보겠습니다.

    const Elen = DEFAULT + CAFE // 0101
    const Carl = DEFAULT + LABORATORY // 0011
    const Jenny = DEFAULT + CAFE + PARK // 1101
    


    각 사람이 액세스할 수 있는 권한이 있는 위치를 확인하기 위해 각 영역에 대해 true 또는 false가 포함된 개체를 반환하는 함수를 만듭니다.

    function checkPermissions(person) {
      // Default if you have no permissions
      var permissions = {
        default: false,
        laboratory: false,
        cafe: false,
        park: false,
      }
    
      // Person can enter the building
      if(person & DEFAULT) {
        permissions.default = true
      }
    
      // Person can enter the laboratory
      if(person & LABORATORY) {
        permissions.laboratory = true
      }
    
      // Person can enter the cafe
      if(person & CAFE) {
        permissions.cafe = true
      }
    
      // Person can enter the park
      if(person & PARK) {
        permissions.park = true
      }
    
      // Return permissions of this person
      return permissions
    }
    


    이것이 작동하는지 확인하기 위해 각 사람의 권한을 출력해 봅시다.

    const permsOfElen = checkPermissions(Elen)
    console.log("Permissions of Elen: ", JSON.parse(permsOfElen))
    
    const permsOfCarl = checkPermissions(Carl)
    console.log("Permissions of Carl: ", JSON.parse(permsOfCarl))
    
    const permsOfJenny = checkPermissions(Jenny)
    console.log("Permissions of Jenny: ", JSON.parse(permsOfJenny))
    


    그리고 여기에 올바른 출력이 있습니다.

    "Permissions of Elen: ", {
      default: true, // <--
      laboratory: false,
      cafe: true, // <--
      park: false
    }
    "Permissions of Carl: ", {
      default: true, // <--
      laboratory: true, // <--
      cafe: false,
      park: false
    }
    "Permissions of Jenny: ", {
      default: true, // <--
      laboratory: false,
      cafe: true, // <--
      park: true // <--
    }
    


    여기 Code가 있습니다!

    📍 어디서 사용할 수 있나요?



    모든 애플리케이션에서 비트 권한 시스템을 사용할 수 있습니다. 바이너리 때문에 빠르고 구현하기가 매우 쉽습니다. 또한 이 시스템의 확장성은 매우 쉽고 거의 무한하거나 데이터 유형의 한계에 도달할 때까지 😉입니다.

    역할에 여러 권한을 부여한 다음 각 권한이 아닌 역할만 확인하는 역할 기반 권한 시스템에도 비트 단위를 사용할 수 있습니다 🤷‍♂️.

    나는 모든 애플리케이션에서 이 시스템을 사용하여 특정 작업을 승인합니다. AquaHub의 여정을 따라오세요!

    🔥 마지막 말



    읽어 주셔서 감사합니다!
    팁이나 문제에 대해 주저하지 말고 의견을 말하십시오. 댓글 하나하나에 기쁨으로 답하겠습니다.

    좋은 웹페이지 즐겨찾기