Yii - Autorizzazione

Viene chiamato il processo di verifica che un utente disponga di autorizzazioni sufficienti per eseguire un'operazione authorization. Yii fornisce un ACF (Access Control Filter), un metodo di autorizzazione implementato comeyii\filters\AccessControl. Modifica la funzione behavior () del SiteController -

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

Nel codice precedente, ACF è allegato come comportamento. L'unica proprietà specifica che l'ACF deve essere applicato solo alle azioni about e contact. Tutte le altre azioni non sono soggette al controllo degli accessi. La proprietà rules elenca le regole di accesso. Tutti gli ospiti (con il ruolo "?") Potranno accedere al fileaboutazione. Tutti gli utenti autenticati (con il ruolo "@") potranno accedere al contatto e alle azioni.

Se vai all'URL http://localhost:8080/index.php?r=site/about, vedrai la pagina, ma se apri l'URL http://localhost:8080/index.php?r=site/contact, verrai reindirizzato alla pagina di accesso perché solo gli utenti autenticati possono accedere al file contact azione.

Le regole di accesso supportano molte opzioni:

  • allow - Definisce se si tratta di una regola "consenti" o "nega".

  • actions - Definisce le azioni che questa regola corrisponde.

  • controllers - Definisce a quali controller corrisponde questa regola.

  • roles- Definisce i ruoli utente che questa regola corrisponde. Vengono riconosciuti due ruoli speciali:

    • ? - corrisponde a un utente ospite.

    • @ - corrisponde a un utente autenticato.

  • ips - Definisce gli indirizzi IP che questa regola corrisponde.

  • verbs - Definisce quale metodo di richiesta (POST, GET, PUT, ecc.) Corrisponde a questa regola.

  • matchCallback - Definisce una funzione richiamabile PHP che dovrebbe essere chiamata per verificare se questa regola deve essere applicata.

  • denyCallback - Definisce una funzione chiamabile PHP che dovrebbe essere chiamata quando questa regola negherà l'accesso.

Le password

Step 1 - Yii fornisce i seguenti metodi pratici per lavorare con le 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);
}

Step 2 - Immettere l'URL http://localhost:8080/index.php?r=site/auth, vedrai quanto segue.