Yii - Autorisierung

Der Prozess zum Überprüfen, ob ein Benutzer über genügend Berechtigungen verfügt, um etwas zu tun, wird aufgerufen authorization. Yii bietet einen ACF (Access Control Filter), eine Autorisierungsmethode, die als implementiert istyii\filters\AccessControl. Ändern Sie die behaviour () - Funktion des SiteControllers -

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

Im obigen Code wird ACF als Verhalten angehängt. Die einzige Eigenschaft gibt an, dass der ACF nur auf die Aktionen about und contact angewendet werden soll. Alle anderen Aktionen unterliegen nicht der Zugriffskontrolle. Die Eigenschaft rules listet die Zugriffsregeln auf. Alle Gäste (mit der Rolle "?") Haben Zugang zumaboutAktion. Alle authentifizierten Benutzer (mit der Rolle "@") können auf den Kontakt und auf Aktionen zugreifen.

Wenn Sie zur URL gehen http://localhost:8080/index.php?r=site/aboutwird die Seite angezeigt, aber wenn Sie die URL öffnen http://localhost:8080/index.php?r=site/contactwerden Sie zur Anmeldeseite weitergeleitet, da nur authentifizierte Benutzer auf die zugreifen können contact Aktion.

Zugriffsregeln unterstützen viele Optionen -

  • allow - Definiert, ob dies eine "Zulassen" - oder "Verweigern" -Regel ist.

  • actions - Definiert, mit welchen Aktionen diese Regel übereinstimmt.

  • controllers - Definiert, mit welchen Controllern diese Regel übereinstimmt.

  • roles- Definiert Benutzerrollen, denen diese Regel entspricht. Zwei besondere Rollen werden erkannt -

    • ? - Entspricht einem Gastbenutzer.

    • @ - Entspricht einem authentifizierten Benutzer.

  • ips - Definiert IP-Adressen, mit denen diese Regel übereinstimmt.

  • verbs - Definiert, mit welcher Anforderungsmethode (POST, GET, PUT usw.) diese Regel übereinstimmt.

  • matchCallback - Definiert eine aufrufbare PHP-Funktion, die aufgerufen werden soll, um zu überprüfen, ob diese Regel angewendet werden soll.

  • denyCallback - Definiert eine aufrufbare PHP-Funktion, die aufgerufen werden soll, wenn diese Regel den Zugriff verweigert.

Passwörter

Step 1 - Yii bietet die folgenden praktischen Methoden zum Arbeiten mit Passwörtern.

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 - Geben Sie die URL ein http://localhost:8080/index.php?r=site/authsehen Sie folgendes.