Yii - प्राधिकरण

किसी उपयोगकर्ता को कुछ करने की पर्याप्त अनुमति देने की पुष्टि करने की प्रक्रिया को कहा जाता है authorization। Yii एक ACF (एक्सेस कंट्रोल फ़िल्टर) प्रदान करता है, जो एक प्राधिकार विधि के रूप में कार्यान्वित किया जाता हैyii\filters\AccessControl। 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 एक व्यवहार के रूप में जुड़ा हुआ है। एकमात्र संपत्ति निर्दिष्ट करती है कि ACF को केवल के बारे में और संपर्क क्रियाओं पर लागू किया जाना चाहिए। अन्य सभी क्रियाएं अभिगम नियंत्रण के अधीन नहीं हैं। नियम संपत्ति पहुंच नियमों को सूचीबद्ध करती है। सभी मेहमानों ("भूमिका" के साथ) तक पहुँचने की अनुमति होगीaboutकार्रवाई। सभी प्रमाणित उपयोगकर्ता ("@" भूमिका के साथ) संपर्क तक पहुँचने और क्रियाओं के लिए अनुमति दी जाएगी।

यदि आप URL पर जाते हैं http://localhost:8080/index.php?r=site/about, आप पृष्ठ देखेंगे, लेकिन यदि आप URL खोलते हैं http://localhost:8080/index.php?r=site/contact, आपको लॉगिन पृष्ठ पर पुनः निर्देशित किया जाएगा क्योंकि केवल प्रमाणित उपयोगकर्ता ही पहुँच सकते हैं contact कार्रवाई।

पहुँच नियम कई विकल्पों का समर्थन करते हैं -

  • allow - परिभाषित करता है कि क्या यह "अनुमति" या "इनकार" नियम है।

  • actions - परिभाषित करता है कि यह नियम किन क्रियाओं से मेल खाता है।

  • controllers - परिभाषित करता है कि यह नियम किन नियमों से मेल खाता है।

  • roles- उपयोगकर्ता नियम परिभाषित करता है कि यह नियम मेल खाता है। दो विशेष भूमिकाओं को पहचाना जाता है -

    • ? - एक अतिथि उपयोगकर्ता से मेल खाता है।

    • @ - एक प्रमाणित उपयोगकर्ता से मेल खाता है।

  • ips - आईपी परिभाषित करता है कि यह नियम मेल खाता है।

  • verbs - निर्धारित करता है कि कौन सी विधि (POST, GET, PUT, आदि) इस नियम से मेल खाती है।

  • matchCallback - एक PHP कॉल करने योग्य फ़ंक्शन को परिभाषित करता है जिसे यह जांचने के लिए बुलाया जाना चाहिए कि क्या यह नियम लागू किया जाना चाहिए।

  • denyCallback - एक PHP कॉल करने योग्य फ़ंक्शन को परिभाषित करता है जिसे तब बुलाया जाना चाहिए जब यह नियम पहुंच से इनकार करेगा।

पासवर्डों

Step 1 - Yii पासवर्ड के साथ काम करने के लिए निम्नलिखित आसान तरीके प्रदान करता है।

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);
}

Step 2 - URL दर्ज करें http://localhost:8080/index.php?r=site/auth, आप निम्नलिखित देखेंगे।