접근거부

2026년 4월 30일 09:30분

민수기 16장에서 고라와 250명이 제사장 직분을 침범하려 합니다. 허가받지 않은 접근은 거부되고 심판이 뒤따릅니다. 나는 허용 역할 목록을 관리하고 미허가 접근 시 즉시 거부하는 접근 제어기를 만들었습니다.

package com.jesusbornd.numbers;

import java.util.Set;

public class Numbers_16_Chapter_Lv2 {

    enum Role { LEVITE, PRIEST, HIGH_PRIEST }

    record AccessRequest(String name, Role role, String resource) {}

    static class AccessControl {
        private final Set<Role> allowed;

        AccessControl(Role... roles) { this.allowed = Set.of(roles); }

        void check(AccessRequest req) {
            if (allowed.contains(req.role())) {
                System.out.printf("✅ %s(%s) → '%s' 접근 허가%n",
                    req.name(), req.role(), req.resource());
            } else {
                System.out.printf("❌ %s(%s) → '%s' 접근 거부 — 권한 없음%n",
                    req.name(), req.role(), req.resource());
            }
        }
    }

    public static void main(String[] args) {
        AccessControl altar = new AccessControl(Role.PRIEST, Role.HIGH_PRIEST);

        altar.check(new AccessRequest("아론",    Role.HIGH_PRIEST, "번제단"));
        altar.check(new AccessRequest("엘르아살",Role.PRIEST,      "번제단"));
        altar.check(new AccessRequest("고라",    Role.LEVITE,      "번제단"));
        altar.check(new AccessRequest("다단",    Role.LEVITE,      "번제단"));
    }
}

from dataclasses import dataclass
from enum import Enum

class Role(Enum):
    LEVITE      = "레위인"
    PRIEST      = "제사장"
    HIGH_PRIEST = "대제사장"

@dataclass
class AccessRequest:
    name: str
    role: Role
    resource: str

class AccessControl:
    def __init__(self, *allowed_roles: Role):
        self._allowed = set(allowed_roles)

    def check(self, req: AccessRequest):
        if req.role in self._allowed:
            print(f"✅ {req.name}({req.role.value}) → '{req.resource}' 접근 허가")
        else:
            print(f"❌ {req.name}({req.role.value}) → '{req.resource}' 접근 거부 — 권한 없음")


if __name__ == "__main__":
    altar = AccessControl(Role.PRIEST, Role.HIGH_PRIEST)

    altar.check(AccessRequest("아론",     Role.HIGH_PRIEST, "번제단"))
    altar.check(AccessRequest("엘르아살", Role.PRIEST,      "번제단"))
    altar.check(AccessRequest("고라",     Role.LEVITE,      "번제단"))
    altar.check(AccessRequest("다단",     Role.LEVITE,      "번제단"))

Comments

Avatar
 2026년 4월 30일 22:15분

정해진 경계를 넘으려 했을 때 어떤 일이 생기는지 똑똑히 보여주네요.



Search

← 목록으로