웹 개발에서 권한 관리가 매우 중요한 부분입니다. 일반적으로 다른 사용자의 권한에 따라 특정 리소스에 대한 액세스를 제한해야합니다. PHP에서는 Array_Filter () 함수를 사용하여 권한을 효율적으로 필터링 할 수 있습니다. 특히 사용자 권한 데이터가 클 경우 매우 우수한 성능을 제공 할 수 있습니다. 이 기사에서는 Array_Filter () 와 함께 권한 필터링 기능을 신속하게 구현하는 방법을 소개합니다.
php의 array_filter () 함수는 배열의 요소를 필터링하는 데 사용됩니다. 이 함수는 배열과 콜백 함수를 허용합니다. 콜백 함수의 반환 값은 true 또는 false 입니다. Array_Filter ()는 콜백 함수의 반환 값에 따라 배열에서 요소를 유지할지 여부를 결정합니다.
기본 구문은 다음과 같습니다.
array_filter(array $array, callable $callback, int $mode = 0): array
$ 배열 : 필터 배열.
$ 콜백 : 필터링을위한 콜백 함수.
$ 모드 : 콜백 함수로 전달 된 값을 결정하기위한 선택적 매개 변수입니다. 0은 값 전송 방법이고 1은 주요 전송 방법입니다.
다른 사용자가 액세스 할 수있는 리소스를 기록하는 권한 목록이 있다고 가정하고 배열은 다음과 같습니다.
$permissions = [
'admin' => ['view_dashboard', 'edit_settings', 'view_reports'],
'editor' => ['view_dashboard', 'view_reports'],
'viewer' => ['view_dashboard'],
];
사용자 역할에 따라 액세스 권한이있는 리소스를 필터링하고자합니다. 관리자 가 모든 리소스에 액세스 할 수있는 권한이 있어야한다고 가정하면 편집기 및 뷰어 사용자는 일부 제한 사항이 있습니다.
$user_role = 'editor'; // 현재 편집자 역할이라고 가정하십시오
// 현재 역할에 대한 권한으로 리소스를 걸러냅니다
$user_permissions = $permissions[$user_role];
// 필터링 해야하는 리소스 목록
$all_permissions = ['view_dashboard', 'edit_settings', 'view_reports', 'delete_post'];
$filtered_permissions = array_filter($all_permissions, function ($permission) use ($user_permissions) {
return in_array($permission, $user_permissions);
});
print_r($filtered_permissions);
출력 결과 :
Array
(
[0] => view_dashboard
[2] => view_reports
)
이 예를 통해 Array_Filter () 함수가 현재 사용자 역할의 권한을 필터링하는 데 도움이되는 것을 알 수 있습니다.
실제 프로젝트에서는 일부 권한에 추가 제한이있을 수있는 것과 같은 다른 규칙에 따라 권한 필터링이 더 복잡 할 수 있습니다. 예를 들어, 일부 작업은 특정 조건이 충족되거나 일부 리소스에 특정 권한 조합이 필요한 경우에만 수행 할 수 있습니다.
다음과 같은 권한 데이터가 있다고 가정합니다.
$permissions = [
'admin' => ['view_dashboard', 'edit_settings', 'view_reports'],
'editor' => ['view_dashboard', 'view_reports'],
'viewer' => ['view_dashboard'],
];
// 사용자 역할
$user_role = 'admin';
// 추가 사용자 권한 제한
$user_restrictions = ['edit_settings']; // admin 역할은 편집 설정을 허용하지 않습니다
// 현재 역할에 대한 권한으로 리소스를 걸러냅니다并应用额外的权限限制
$user_permissions = $permissions[$user_role];
$all_permissions = ['view_dashboard', 'edit_settings', 'view_reports', 'delete_post'];
$filtered_permissions = array_filter($all_permissions, function ($permission) use ($user_permissions, $user_restrictions) {
return in_array($permission, $user_permissions) && !in_array($permission, $user_restrictions);
});
print_r($filtered_permissions);
출력 결과 :
Array
(
[0] => view_dashboard
[2] => view_reports
)
이 예에서는 사용자 역할의 권한을 필터링 할뿐만 아니라 user_restrictions 에 따라 권한을 더 제한합니다.
Array_Filter () 는 PHP에서 매우 유용한 기능으로, 배열을 효율적으로 처리하고 필터링하는 데 도움이 될 수 있습니다. 권한 관리에서 Array_Filter ()를 결합하면 다양한 사용자 역할 및 권한 요구 사항에 따라 필요한 권한을 쉽게 필터링 할 수 있습니다. 프로젝트에 많은 권한 데이터 처리가있는 경우 Array_Filter ()를 사용하면 코드의 가독성을 향상시킬뿐만 아니라 실행 효율성을 향상시킬 수 있습니다.