권한 제어 시스템을 개발할 때 역할 및 권한 관리가 중요한 측면입니다. 합리적인 권한 할당을 통해 다른 역할이 리소스 액세스를 정확하게 제어 할 수 있도록 할 수 있습니다. PHP는이 목표를 달성하는 데 도움이되는 많은 도구를 제공합니다. Array_Diff_Key ()는 권한 제어를 처리 할 때 역할과 권한을 비교할 수있는 매우 유용한 기능입니다. 이 기사는 Array_Diff_Key ()를 사용하여 역할과 권한을 비교하여보다 정확한 권한 관리를 달성하는 방법을 소개합니다.
Array_Diff_Key () 함수는 두 개 이상의 배열 사이에 키 이름이 다른 요소를 계산하는 데 사용됩니다. 특히, 첫 번째 배열에는 있지만 다른 배열에는 있지 않은 키 값 쌍이 포함 된 배열을 반환합니다.
기능 프로토 타입 :
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 : 첫 번째 배열을 비교합니다.
$ array2 : 첫 번째 배열과 비교할 다른 배열.
반환 : 첫 번째 배열에는 존재하지만 다른 배열에는 그렇지 않은 키 이름이 포함 된 키 값 쌍을 반환합니다.
권한 관리에는 일반적으로 두 가지 유형의 배열이 있습니다.
역할 배열 : 역할과 역할의 권한이 포함되어 있습니다.
시스템 권한 배열 : 모든 시스템 지원 권한을 포함합니다.
두 가지 유형의 배열이 있다고 가정합니다.
// 역할 권한 배열
$rolePermissions = [
'view_dashboard' => true,
'edit_profile' => true,
'delete_account' => false,
];
// 시스템 권한 배열
$systemPermissions = [
'view_dashboard' => true,
'edit_profile' => true,
'delete_account' => true,
'create_report' => false,
];
위의 예에서 $ rolepermissions 배열은 역할의 권한을 나타내고 $ SystemPermissions 배열은 시스템의 가능한 모든 권한을 나타냅니다.
현재 역할에없는 권한을 찾거나 역할 권한과 시스템 권한의 차이를 비교해야한다고 가정하면 Array_Diff_Key () 함수를 사용하여 구현할 수 있습니다.
Array_Diff_Key ()를 사용하여 현재 역할에 누락 된 권한을 찾을 수 있습니다. 아래 그림과 같이 :
// 역할에 대한 누락 된 권한을 계산하십시오
$missingPermissions = array_diff_key($systemPermissions, $rolePermissions);
// 출력 누락 권한
print_r($missingPermissions);
출력 결과는 다음과 같습니다.
Array
(
[create_report] => false
)
이는 역할에 Create_Report 권한이 부족하다는 것을 의미합니다. 이 허가는 시스템에서 사용할 수 있지만 역할은 부여되지 않습니다.
Array_diff_key ()를 사용하면 역할과 시스템 간의 권한 차이를 쉽게 비교할 수 있습니다. 그러나보다 정확한 권한 관리를 달성하기 위해이 방법을 확장하여 사용자 역할 및 권한 요구 사항과 함께 동적 권한 검사를 수행 할 수도 있습니다.
예를 들어, 컨트롤러에서 사용자의 역할과 요청 된 권한을 기반으로 작업을 허용할지 여부를 동적으로 결정할 수 있습니다.
function checkPermission($rolePermissions, $systemPermissions, $requestedPermission)
{
// 권한 권한에 허가가 포함되어 있는지 확인하십시오.
if (isset($rolePermissions[$requestedPermission])) {
return $rolePermissions[$requestedPermission];
}
// 이 허가가 역할 권한에 있지 않은 경우,시스템 권한이 있는지 확인하십시오
if (isset($systemPermissions[$requestedPermission])) {
return $systemPermissions[$requestedPermission];
}
return false;
}
$requestedPermission = 'create_report';
if (checkPermission($rolePermissions, $systemPermissions, $requestedPermission)) {
echo "Permission granted!";
} else {
echo "Permission denied!";
}
이 예에서는 역할 권한 및 시스템 권한의 비교 결과에 따라 사용자가 작업을 수행 할 수 있는지 여부를 유연하게 제어 할 수 있습니다.
PHP의 array_diff_key () 함수를 사용하면 역할 권한을 시스템 권한과 효과적으로 비교하여보다 정확한 권한 관리를 달성 할 수 있습니다. 이러한 방식으로 개발자는 다른 역할이 공인 된 기능 만 액세스 할 수 있도록 시스템의 보안을 향상시킬 수 있습니다.
실제 애플리케이션에서 권한 제어 설계는 단일 기능에 따라 다를뿐만 아니라 역할과 권한 사이의 관계를 종합적으로 고려하고 시스템 권한 설정을 유연하게 조정하며 궁극적으로 완전한 권한 관리 시스템을 구현합니다.