مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

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 را وارد کنید، آنچه که مشاهده می کنید مطابق  با تصویر زیر می باشد.

فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید