현재 위치: > 최신 기사 목록> PHP에서 역할 기반 권한 제어 메커니즘을 구현하는 방법

PHP에서 역할 기반 권한 제어 메커니즘을 구현하는 방법

M66 2025-06-17

PHP에서 역할 기반 권한 제어 메커니즘을 구현하는 방법

보안은 웹 사이트 나 응용 프로그램을 개발할 때 중요한 요소입니다. 사용자에게 적절한 권한을 설정하고 특정 권한이있는 사용자 만 해당 기능 및 리소스에 액세스 할 수 있도록하는 방법은 모든 개발자가 해결 해야하는 문제입니다. 역할 기반 권한 제어 (RBAC)는 일반적인 권한 관리 방법입니다. 이 기사에서는 PHP를 사용하여 역할 기반 인증 제어를 구현하는 방법을 안내합니다.

1. 역할 및 권한의 정의

역할 기반 권한 제어를 구현하기 전에 먼저 "역할"및 "권한"의 개념을 명확히해야합니다.

역할은 시스템에서 사용자의 신원을 나타냅니다. 예를 들어, "관리자", "일반 사용자"등. 각 역할에는 일반적으로 사용자가 수행 할 수있는 내용을 제한하기 위해 다른 권한이 부여됩니다.

권한 은 시스템 정의되어 있으며 역할이 수행 할 수있는 행동 또는 자원에 액세스 할 수있는 조치를 결정합니다. 권한에는 "데이터 읽기", "데이터 수정"또는 "데이터 삭제"등이 포함될 수 있습니다.

역할과 권한의 조합을 통해 사용자는 시스템의 작동 권한을 효과적으로 제어 할 수 있습니다.

2. 데이터베이스의 역할 및 권한 저장

역할 기반 권한 제어를 구현하려면 일반적으로 데이터베이스에 역할 및 권한 정보를 저장해야합니다. 우리는 두 개의 테이블을 만들 수 있습니다 : 하나는 역할 정보를 저장하고 다른 스토어는 권한 정보를 저장합니다. 다음은 역할 및 권한 테이블을 생성하는 예제 SQL 문입니다.

역할 테이블 작성 :

테이블 역할 생성 (
    id int auto_increment 기본 키,
    이름 Varchar (255) NULL이 아닙니다
);

권한 테이블 작성 :

테이블 권한 생성 (
    id int auto_increment 기본 키,
    이름 Varchar (255) NULL이 아닙니다
);

역할 테이블에서 "이름"필드를 사용하여 역할 이름과 권한 테이블에서 "이름"필드를 사용하여 권한 이름을 저장합니다.

3. 사용자에게 역할 및 권한을 할당하십시오

실제 응용 프로그램에서 먼저 역할과 권한을 생성 한 다음 사용자에게 역할 및 권한을 할당해야합니다.

예를 들어 다음 SQL 문을 사용하여 데이터를 역할 테이블 및 권한 테이블에 삽입 할 수 있습니다.

역할 데이터 삽입 :

역할에 삽입 (이름) 값 ( 'admin');
역할에 삽입 (이름) 값 ( '사용자');

권한 데이터 삽입 :

권한에 삽입 (이름) 값 ( 'create');
권한에 삽입 (이름) 값 ( 'read');
권한에 삽입 (이름) 값 ( '업데이트');
권한에 삽입 (이름) 값 ( 'delete');

다음으로 사용자에게 역할을 할당해야합니다. 사용자 테이블을 만들고 역할 ID를 연결하여 사용자 정보를 저장할 수 있습니다. 다음은 사용자 테이블 작성을위한 SQL의 예입니다.

사용자 테이블 작성 :

테이블 사용자 만들기 (
    id int auto_increment 기본 키,
    Username Varchar (255) NOT NULL,
    비밀번호 varchar (255) null,
    역할 _id int null이 아닙니다
);

그런 다음 다음 진술을 사용하여 사용자 데이터를 삽입하십시오.

사용자 데이터 삽입 :

사용자에 삽입 (사용자 이름, 비밀번호, role_id) 값 ( 'admin', 'admin_password', 1);
사용자에 삽입 (사용자 이름, 비밀번호, role_id) 값 ( '사용자', 'user_password', 2);

4. 역할 기반 인증 및 제어를 구현하십시오

PHP에서는 세션을 사용하여 사용자의 로그인 상태 및 역할 정보를 저장할 수 있습니다. 사용자가 로그인 한 후 세션에 역할 ID를 저장 한 다음 역할 ID를 판단하여 권한 제어를 사용합니다.

다음은 사용자의 로그인 상태, 역할 및 권한을 확인하는 PHP 코드 예입니다.

// 세션을 시작합니다
session_start ();

// 사용자가 로그인한지 확인 if (! isset ($ _ session [ 'user_id'])) {
    에코 "로그인되지 않았다";
    출구;
}

// 사용자 역할 ID를 얻습니다
$ role_id = $ _session [ 'role_id'];

// 사용자 역할을 판단하는 경우 ($ role_id == 1) {
    Echo "관리자, 모든 권한이 있습니다";
} elseif ($ role_id == 2) {
    Echo "일부 권한이있는 일반 사용자";
} 또 다른 {
    에코 "알 수없는 역할";
    출구;
}

// 사용자 권한을 확인하십시오 $ $ vermission = $ _get [ '허가'];

if ($ role_id == 1 || ($ role_id == 2 && in_Array ($ resment, [ 'read', 'update'))) {
    echo "{$ hassment} 권한이 있습니다";
} 또 다른 {
    echo "아니요 {$ vermission} 권한";
    출구;
}

이 코드에서 먼저 사용자가 로그인한지 확인한 다음 사용자의 역할 ID를 기반으로 한 권한을 결정하십시오. 실제 요구에 따라 역할 및 권한의 판단 논리를 사용자 정의 할 수 있습니다.

5. 요약

역할 기반 인증 제어 (RBAC)는 매우 효과적인 권한 관리 방법입니다. 데이터베이스에 역할 및 권한을 저장하고 PHP 코드를 결합하여 사용자의 역할 및 권한을 판단함으로써 각 사용자가 자체 권한 내에서만 액세스하고 작업을 수행 할 수 있도록 할 수 있습니다. 이 접근법은 개발 중 시스템의 보안 및 관리 능력을 향상시키는 데 도움이됩니다.