အသုံးပြုသူ 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 ကိုသာအသုံးပြုသည်။
အသုံးပြုသူခွင့်ပြုချက်သည် 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 က်ဘ်အပလီကေးရှင်းများတည်ဆောက်ခြင်း၏အဓိကအလေ့အကျင့်များထဲမှတစ်ခုဖြစ်သောအထူးထိန်းချုပ်မှုစီမံခန့်ခွဲမှုဆိုင်ရာယုတ္တိဗေဒကိုအကောင်အထည်ဖော်နိုင်သည်။