လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Yii Framework Midday: authentication နှင့်အသုံးပြုသူခွင့်ပြုချက်ကိုအကောင်အထည်ဖော်ခြင်း

Yii Framework Midday: authentication နှင့်အသုံးပြုသူခွင့်ပြုချက်ကိုအကောင်အထည်ဖော်ခြင်း

M66 2025-06-06

နိဒါန်း

Middleware သည်ခေတ်သစ်ဝက်ဘ်ဖွံ့ဖြိုးတိုးတက်မှု၏အရေးကြီးသောအစိတ်အပိုင်းတစ်ခုဖြစ်ပြီးတောင်းဆိုမှုများနှင့်တုန့်ပြန်မှုအကြားပြောင်းလဲမှုဆိုင်ရာကောင်းသောယုတ္တိဗေဒကိုထည့်သွင်းရန်အသုံးပြုလေ့ရှိသည်။ YII မူဘောင်တွင် Middleware ကို "filter များ" ဟုခေါ်သည်။ Authentication နှင့်အသုံးပြုသူခွင့်ပြုချက်လုပ်ဆောင်ချက်များကိုထိရောက်စွာအကောင်အထည်ဖော်နိုင်သည်။ ဤဆောင်းပါးသည် YII မူဘောင်ရှိ filter များဖြင့်ဤသော့နှစ်ခုကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုစနစ်တကျမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ အသုံးပြုသူမည်သူမည်ဝါဒီ authentication ကိုအကောင်အထည်ဖော်ပါ

အသုံးပြုသူ authentication သည်စနစ်၏လုံခြုံရေးကိုသေချာစေရန်ပထမဆုံးကာကွယ်ရေးလိုင်းဖြစ်သည်။ YII တွင် YII \ အခြေစိုက်စခန်း \ statedfilter မှအမွေဆက်ခံနိုင်သည့်အသုံးပြုသူများကိုကြားဖြတ်ရန်အမွေဆက်ခံနိုင်သည့်အတန်းကိုဖန်တီးနိုင်သည်။

ဒီမှာ authentication filter အတွက်နမူနာကုဒ်တစ်ခု။

 
namespace app\filters;

use Yii;
use yii\base\ActionFilter;

class AuthFilter extends ActionFilter
{
    public function beforeAction($action)
    {
        $user = Yii::$app->user;

        if ($user->isGuest) {
            $user->loginRequired();
            return false;
        }

        return parent::beforeAction($action);
    }
}

အသုံးပြုသူသည်အကာအကွယ်ပေးထားသောလည်ပတ်မှုနှင့် 0 င်ရောက်ခြင်းမပြုပါက 0 င်ရောက်ခြင်းစာမျက်နှာသို့ redirect ည့်သည်များမရောက်မီဤ filter ကိုစစ်ဆေးသည်။

ထို့နောက်ကျွန်ုပ်တို့သည် filter ကို Controller သို့ချည်နှောင်ရန်လိုအပ်သည်။

 
namespace app\controllers;

use yii\web\Controller;
use app\filters\AuthFilter;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'auth' => [
                'class' => AuthFilter::class,
                'only' => ['admin'],
            ],
        ];
    }

    public function actionAdmin()
    {
        return 'Admin Area';
    }
}

အထက်ပါဥပမာတွင် Muthfileter သည် admin action ကိုသာအသုံးပြုသည်။

2 ။ အသုံးပြုသူခွင့်ပြုချက်ထိန်းချုပ်မှုကိုအကောင်အထည်ဖော်ပါ

အသုံးပြုသူခွင့်ပြုချက်သည် logged in-in အသုံးပြုသူတစ် ဦး သည်အရင်းအမြစ်တစ်ခုကိုရယူရန်ခွင့်ပြုချက်ရှိ, YII မူဘောင်တွင်ခွင့်ပြုချက်ယုတ္တိဗေဒကိုဖြည့်စွက်ရန် filter များကိုလည်းအသုံးပြုနိုင်သည်။

အသုံးပြုသူခွင့်ပြုချက်ကိုအကောင်အထည်ဖော်သည့်ဥပမာ filter တစ်ခုကိုဤတွင်ဖော်ပြထားသည်။

 
namespace app\filters;

use Yii;
use yii\base\ActionFilter;
use yii\web\ForbiddenHttpException;

class AccessControlFilter extends ActionFilter
{
    public function beforeAction($action)
    {
        $user = Yii::$app->user;

        if (!$user->can($action->id)) {
            throw new ForbiddenHttpException('You are not allowed to perform this action.');
        }

        return parent::beforeAction($action);
    }
}

ဤစစ် filter သည်အသုံးပြုသူသည်လက်ရှိလုပ်ဆောင်မှုကိုလုပ်ဆောင်ရန်ခွင့်ပြုချက်ရှိမရှိဆုံးဖြတ်ရန် $ user-> can () နည်းလမ်းကိုအသုံးပြုသည်။ ခွင့်ပြုချက်မရှိပါက 43 တားမြစ်ထားသောခြွင်းချက် 403 ကိုပစ်ချလိမ့်မည်။

ခွင့်ပြုချက် filter ကို authentication ကိုအလားတူအသုံးပြုသည်။

 
namespace app\controllers;

use yii\web\Controller;
use app\filters\AccessControlFilter;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControlFilter::class,
                'only' => ['admin'],
            ],
        ];
    }

    public function actionAdmin()
    {
        return 'Admin Area';
    }
}

ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်တိကျသော Controller စစ်ဆင်ရေးများသို့အသုံးပြုသူ၏ဝင်ရောက်ခွင့်ကိုပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်နိုင်သည်။

အကျဉ်းချုပ်

YII မူဘောင်တွင်အသုံးပြုသူစစ်မှန်ကြောင်းအတည်ပြုခြင်းနှင့်ခွင့်ပြုချက်ထိန်းချုပ်မှုကိုအကောင်အထည်ဖော်ရန် Filter Modernware (I.E. Middleware) ကိုဤဆောင်းပါးကဖော်ပြသည်။ ဤနည်းလမ်းသည်ရှင်းလင်းသောဖွဲ့စည်းပုံသာသာမကလျှောက်လွှာတစ်ခုလုံး၏လုံခြုံရေးကိုလည်းတိုးတက်စေသည်။ Filter Classများဖန်တီးခြင်းနှင့် Controller တွင်သူတို့ကို configure လုပ်ခြင်းအားဖြင့် developer များသည်လုံခြုံစိတ်ချရသော 0 က်ဘ်အပလီကေးရှင်းများတည်ဆောက်ခြင်း၏အဓိကအလေ့အကျင့်များထဲမှတစ်ခုဖြစ်သောအထူးထိန်းချုပ်မှုစီမံခန့်ခွဲမှုဆိုင်ရာယုတ္တိဗေဒကိုအကောင်အထည်ဖော်နိုင်သည်။