비트 권한 시스템 구축
10872 단어 javascripttutorialsecuritywebdev
권한을 처리하고 결합하는 시스템은 압도적이고 너무 복잡할 수 있지만 🔐 Bitwise Permission System이라는 더 좋은 방법이 있습니다!
🛠 직접 만드는 방법
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의 여정을 따라오세요!
🔥 마지막 말
읽어 주셔서 감사합니다!
팁이나 문제에 대해 주저하지 말고 의견을 말하십시오. 댓글 하나하나에 기쁨으로 답하겠습니다.
Reference
이 문제에 관하여(비트 권한 시스템 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jannisdev/build-a-bitwise-permission-system-ocl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)