Yii - Yetkilendirme

Bir kullanıcının bir şeyi yapmak için yeterli izne sahip olduğunu doğrulama işlemine authorization. Yii, bir yetkilendirme yöntemi olan bir ACF (Erişim Kontrol Filtresi) sağlar.yii\filters\AccessControl. SiteController'ın behaviors () işlevini değiştirin -

public function behaviors() {
   return [
      'access' => [
         'class' => AccessControl::className(),
         'only' => ['about', 'contact'],
         'rules' => [
            [
               'allow' => true,
               'actions' => ['about'],
               'roles' => ['?'],
            ],
            [
               'allow' => true,
               'actions' => ['contact', 'about'],
               'roles' => ['@'],
            ],
         ],
      ],
   ];
}

Yukarıdaki kodda, ACF bir davranış olarak eklenmiştir. Only özelliği, ACF'nin yalnızca hakkında ve iletişim eylemlerine uygulanması gerektiğini belirtir. Diğer tüm eylemler erişim kontrolüne tabi değildir. Rules özelliği, erişim kurallarını listeler. Tüm davetlilerin ("?" Rolüne sahip) şuna erişmesine izin verilecektir.aboutaksiyon. Kimliği doğrulanmış tüm kullanıcıların ("@" rolüne sahip) kişiye ve eylemler hakkında erişimine izin verilecektir.

URL'ye giderseniz http://localhost:8080/index.php?r=site/about, sayfayı göreceksiniz, ancak URL'yi açarsanız http://localhost:8080/index.php?r=site/contact, oturum açma sayfasına yönlendirileceksiniz çünkü yalnızca kimliği doğrulanmış kullanıcılar contact aksiyon.

Erişim kuralları birçok seçeneği destekler -

  • allow - Bunun "izin verme" veya "reddetme" kuralı olup olmadığını tanımlar.

  • actions - Bu kuralın hangi eylemlerle eşleştiğini tanımlar.

  • controllers - Bu kuralın hangi denetleyicilerle eşleştiğini tanımlar.

  • roles- Bu kuralın eşleştiği kullanıcı rollerini tanımlar. İki özel rol tanınır -

    • ? - konuk kullanıcıyla eşleşir.

    • @ - kimliği doğrulanmış bir kullanıcıyla eşleşir.

  • ips - Bu kuralın eşleştiği IP adreslerini tanımlar.

  • verbs - Bu kuralın hangi istek yöntemiyle (POST, GET, PUT, vb.) Eşleştiğini tanımlar.

  • matchCallback - Bu kuralın uygulanıp uygulanmayacağını kontrol etmek için çağrılması gereken bir PHP çağrılabilir işlevi tanımlar.

  • denyCallback - Bu kural erişime izin vermediğinde çağrılması gereken bir PHP çağrılabilir işlevi tanımlar.

Şifreler

Step 1 - Yii, parolalarla çalışmak için aşağıdaki kullanışlı yöntemleri sağlar.

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'yi girin http://localhost:8080/index.php?r=site/auth, aşağıdakileri göreceksiniz.