လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ခွင့်ပြုချက်စီစစ်ခြင်း function ကိုအကောင်အထည်ဖော်သည့်အခါ array_diff_ukey () ကိုအသုံးပြုနည်း

ခွင့်ပြုချက်စီစစ်ခြင်း function ကိုအကောင်အထည်ဖော်သည့်အခါ array_diff_ukey () ကိုအသုံးပြုနည်း

M66 2025-06-06

နောက်ခံစီမံခန့်ခွဲမှုစနစ်သို့မဟုတ်ခွင့်ပြုချက်စီမံခန့်ခွဲမှု module တစ်ခုတည်ဆောက်ရာတွင်ခွင့်ပြုချက်ထိန်းချုပ်မှုသည်များသောအားဖြင့်မရှိမဖြစ်လိုအပ်သောအစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ ပုံမှန်ဇာတ်လမ်းတစ်ပုဒ်သည်စနစ်တွင်ခွင့်ပြုချက်အပြည့်အစုံရှိသည်။ အသုံးပြုသူတစ် ဦး ချင်းစီသည်ခွင့်ပြုချက်များ၏တစ်စိတ်တစ်ပိုင်းကိုသာခွင့်ပြုထားသည်။ အသုံးပြုသူများသည် interface သို့မဟုတ် executing function များကိုမတင်ပြမီအသုံးပြုသူများသည် 0 င်ရောက်ခြင်းကိုထိရောက်စွာစစ်ထုတ်နိုင်ရန်အတွက်ကျွန်ုပ်တို့သည်ခွင့်ပြုချက်စစ်ထုတ်ခြင်းအတွက်တိကျမှန်ကန်ပြီးထိရောက်သောနည်းလမ်းလိုအပ်သည်။ PHP မှပေးသော array_diff_ukey () function သည်ဤခွင့်ပြုချက်ကိုအချို့သောအခြေအနေများတွင်အကောင်အထည်ဖော်နိုင်သည်။

ဤဆောင်းပါးသည် array_diff_ukey () ကို အသုံးပြု. အသုံးပြုသူခွင့်ပြုချက်စစ်ထုတ်ခြင်းများကိုမည်သို့ထိရောက်စွာအကောင်အထည်ဖော်ရမည်ကိုသရုပ်ပြရန်လက်တွေ့ကျသောဥပမာကိုအသုံးပြုမည်။

1 ။ မြင်ကွင်းဖော်ပြချက်

စနစ်သည်ခွင့်ပြုချက်အပြည့်အစုံကိုသတ်မှတ်သည်ဆိုပါစို့။

 $allPermissions = [
    'user.view' => 'အသုံးပြုသူများကိုကြည့်ပါ',
    'user.edit' => 'အသုံးပြုသူကိုတည်းဖြတ်ပါ',
    'post.view' => 'ဆောင်းပါးကိုကြည့်ပါ',
    'post.edit' => 'ဆောင်းပါးကိုတည်းဖြတ်ပါ',
    'admin.panel' => 'နောက်ခံသို့သွားရောက်ပါ',
];

သာမန်အသုံးပြုသူတစ် ဦး ၏ခွင့်ပြုချက်များသည်အောက်ပါအတိုင်းဖြစ်သည် -

 $userPermissions = [
    'user.view' => true,
    'post.view' => true,
];

သစ်ခုတ်ခြင်း, လုံခြုံရေးစစ်ဆေးခြင်းသို့မဟုတ်ခွင့်ပြုချက်ပေးသည့်အချက်များစသည့်လုပ်ဆောင်ချက်များအတွက်အသုံးပြုသူသည်အသုံးပြုသူ သည်ပိုင်ဆိုင်သော ခွင့်ပြုချက်စာရင်းကိုရယူလိုပါသည်။

2 ။ array_diff_ukey () ကို filter လုပ်ဖို့သုံးပါ

array_diff_ukey () function ကို၏ function ကို၏ function သည် array နှစ်ခု၏အဓိကအမည်များကိုနှိုင်းယှဉ်ကြည့်ရန်နှင့် Custom နှိုင်းယှဉ်မှုအတွက် callback function ကိုသုံးပါ။

အသုံးပြုသူသည် ဒေါ်လာ alperports ဖြင့်ပိုင်ဆိုင်ခြင်းမရှိသောခွင့်ပြုချက်ရရန်ကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။

 $diff = array_diff_ukey(
    $allPermissions,
    $userPermissions,
    function($key1, $key2) {
        return strcmp($key1, $key2);
    }
);

အထက်ဖော်ပြပါကုဒ်များတွင် ဒေါ်လာကွဲပြားမှုသည် အသုံးပြုသူများအားလုံးပိုင်ခွင့်မရှိသောခွင့်ပြုချက်များပါ 0 င်သည့်နေရာတစ်ခုသို့ပြန်သွားလိမ့်မည်။

 [
    'user.edit' => 'အသုံးပြုသူကိုတည်းဖြတ်ပါ',
    'post.edit' => 'ဆောင်းပါးကိုတည်းဖြတ်ပါ',
    'admin.panel' => 'နောက်ခံသို့သွားရောက်ပါ',
]

3. စီးပွားရေးယုတ္တိဗေဒပေါင်းစပ်ပြီးပြည့်စုံသောဥပမာ

စီမံခန့်ခွဲမှုဆိုင်ရာစီမံခန့်ခွဲမှုသည်ပြုပြင်ပြောင်းလဲမှုများအတွက်အသုံးပြုသူတစ် ဦး ၏ခွင့်ပြုချက်ကိုပြသသောခွင့်ပြုချက်ကိုပြသသောခွင့်ပြုချက် configuration စာမျက်နှာတစ်ခုရှိသည်ဆိုပါစို့။ ငါတို့လုပ်နိုင်တယ် -

 function getMissingPermissions(array $allPermissions, array $userPermissions): array {
    return array_diff_ukey(
        $allPermissions,
        $userPermissions,
        fn($a, $b) => strcmp($a, $b)
    );
}

// ခွင့်ပြုချက်အားလုံး
$allPermissions = [
    'user.view' => 'အသုံးပြုသူများကိုကြည့်ပါ',
    'user.edit' => 'အသုံးပြုသူကိုတည်းဖြတ်ပါ',
    'post.view' => 'ဆောင်းပါးကိုကြည့်ပါ',
    'post.edit' => 'ဆောင်းပါးကိုတည်းဖြတ်ပါ',
    'admin.panel' => 'နောက်ခံသို့သွားရောက်ပါ',
];

// အသုံးပြုသူပိုင်ခွင့်ပြုချက်များ
$userPermissions = [
    'user.view' => true,
    'post.view' => true,
];

// ပျောက်ဆုံးခွင့်ပြုပါ
$missing = getMissingPermissions($allPermissions, $userPermissions);

// ရလဒ်ရလဒ်
foreach ($missing as $code => $desc) {
    echo "ခွင့်ပြုချက်ပျောက်နေ: $desc ($code)" . PHP_EOL;
}

output ရလဒ် -

 ခွင့်ပြုချက်ပျောက်နေ: အသုံးပြုသူကိုတည်းဖြတ်ပါ (user.edit)
ခွင့်ပြုချက်ပျောက်နေ: ဆောင်းပါးကိုတည်းဖြတ်ပါ (post.edit)
ခွင့်ပြုချက်ပျောက်နေ: နောက်ခံသို့သွားရောက်ပါ (admin.panel)

4 ။ ပုံမှန် application အခြေအနေများ

  • ခွင့်ပြုချက်စာရင်းစစ်စနစ် - သုံးစွဲသူခွင့်ပြုချက်ပြင်ဆင်မှုကိုပြန်လည်သုံးသပ်သည့်အခါပျောက်ဆုံးနေသောပစ္စည်းများကိုလျင်မြန်စွာရှာဖွေပါ။

  • ခြားနားချက်သစ်ထုတ်လုပ်ခြင်း - အသုံးပြုသူခွင့်ပြုချက်မရှိမဖြစ်ရှိရှိနှင့်ပြီးနောက်ကွဲပြားခြားနားမှုများကိုမှတ်တမ်းတင်ပါ။

  • Front-end Property Tree Filtering : Dynamically dynamically ရှေ့တန်း - အဆုံးအပြောင်းအလဲနဲ့ funters လုပ်ထားတဲ့ function ကိုတည်ဆောက်ရန်။

  • URL ခွင့်ပြုချက်စိစစ်ခြင်း ဥပမာအားဖြင့်:

 $permissions = [
    '/dashboard' => 'Dashboard ကိုရယူပါ',
    '/admin/users' => 'အသုံးပြုသူများကိုစီမံပါ',
    '/admin/settings' => 'စနစ်ချိန်ညှိချက်များ',
];

$userPermissions = [
    '/dashboard' => true,
];

$unauthorized = array_diff_ukey($permissions, $userPermissions, 'strcmp');

foreach ($unauthorized as $url => $desc) {
    echo "အသုံးပြုသူများသည်ဝင်ရောက်ရန်ခွင့်ပြုချက်မရှိပါ: https://m66.net$url ($desc)" . PHP_EOL;
}

ထုတ်လုပ်မှု -