Authorization یا تخصیص مجوز در فریمورک Yii
فرایندی که در آن کاربر، اعتبارسنجی می شود که آیا مجوز کافی برای انجام کاری را دارا هست یا خیر، authorization نامیده می شود.
فریمورک Yii یک ACF (Access Control Filter) فراهم می کند ،که یک متد authorization است و از yii\filters\AccessControl پیاده سازی می شود. تابع behaviors() از کنترلر SiteController را مطابق با کد زیر ویرایش کنید:
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['about', 'contact'],
'rules' => [
[
'allow' => true,
'actions' => ['about'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['contact', 'about'],
'roles' => ['@'],
],
],
],
];
}
در کد بالا، ACF به عنوان یک behavior اضافه شده است. Property با نام only تعیین می کند که ACF باید فقط بر روی اکشن های about و contact اعمال شوند. دیگر action ها تحت تاثیر access control قرار نمی گیرند.
Property با نام rules ، access ruleها را لیست می کند.
همه مهمانان (با '?' نشان داده میشود) مجاز به دسترسی اکشن با نام about هستند. تمام کاربران تأیید شده (با '@' نشان داده میشود) مجاز به دسترسی اکشن های contact و about خواهند بود.
اگر شما به آدرس http://localhost:8080/index.php?r=site/about بروید، صفحه را خواهید دید، اما اگر آدرس http://localhost:8080/index.php?r=site/contact را باز کنید، به صفحه login هدایت می شوید، زیرا فقط کاربران تأیید شده می توانند به اکشن contact دسترسی پیدا کنند.
Access ruleها از option های زیادی پشتیبانی می کنند:
- allow – مشخص می کند، یک rule یا قاعده، "allow" هست یا "denay" .
- actions - مشخص می کند، کدام action با این rule مطابقت دارد.
- controllers - مشخص می کند کدام یک از controllerها با این rule مطابقت دارد.
- roles - مشخص می کند کدام یک از role های کاربر با این rule مطابقت دارد. به طور پیشفرض access control دارای دو نقش(roles) می باشد:
- ? – نقش مهمان یا gust که با ? نشان داده می شود
- @ - نقش یک کاربرِ احراز هویت شده که با @ نشان داده می شود.
- ips - مشخص می کند کدام یک از ip آدرس ها با این rule مطابقت دارد.
- verbs - مشخص می کند کدام یک از متدهای request (POST، GET، PUT، و غیره) با این rule مطابقت دارد.
- matchCallback - یک تابع قابل فراخوانی php را تعریف می کند، که باید فراخوانی شود تا چک کند که آیا این rule باید اعمال شود یا خیر.
- denyCallback - یک تابع قابل فراخوانی php را تعریف می کند، که باید فراخوانی شود موقعی که rule، برای دسترسی Denay شده است.
Passwordها
مرحله 1 - فریمورک Yii متد های دستی زیر را برای کار با password ها فراهم نموده است.
public function actionAuth() {
$password = "asd%#G3";
//generates password hasg
$hash = Yii::$app->getSecurity()->generatePasswordHash($password);
var_dump($hash);
//validates password hash
if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
echo "correct password";
} else {
echo "incorrect password";
}
//generate a token
$key = Yii::$app->getSecurity()->generateRandomString();
var_dump($key);
//encrypt data with a secret key
$encryptedData = Yii::$app->getSecurity()->encryptByPassword("mydata", $key);
var_dump($encryptedData);
//decrypt data with a secret key
$data = Yii::$app->getSecurity()->decryptByPassword($encryptedData, $key);
var_dump($data);
//hash data with a secret key
$data = Yii::$app->getSecurity()->hashData("mygenuinedata", $key);
var_dump($data);
//validate data with a secret key
$data = Yii::$app->getSecurity()->validateData($data, $key);
var_dump($data);
}
مرحله 2 – در آدرسبار مرورگر وب تان آدرس http://localhost:8080/index.php?r=site/auth را وارد کنید، آنچه که مشاهده می کنید مطابق با تصویر زیر می باشد.
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…