Yii - Autorização

O processo de verificar se um usuário tem permissão suficiente para fazer algo é chamado authorization. Yii fornece um ACF (Filtro de Controle de Acesso), um método de autorização implementado comoyii\filters\AccessControl. Modifique a função behaviors () do SiteController -

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

No código acima, ACF é anexado como um comportamento. A única propriedade especifica que o ACF deve ser aplicado apenas às ações sobre e contato. Todas as outras ações não estão sujeitas ao controle de acesso. A propriedade rules lista as regras de acesso. Todos os convidados (com a função “?”) Terão permissão para acessar oaboutaçao. Todos os usuários autenticados (com a função “@”) terão permissão para acessar o contato e sobre as ações.

Se você for para o URL http://localhost:8080/index.php?r=site/about, você verá a página, mas se abrir o URL http://localhost:8080/index.php?r=site/contact, você será redirecionado para a página de login porque apenas usuários autenticados podem acessar o contact açao.

As regras de acesso suportam muitas opções -

  • allow - Define se esta é uma regra de "permitir" ou "negar".

  • actions - Define a quais ações esta regra corresponde.

  • controllers - Define com quais controladores esta regra corresponde.

  • roles- Define funções de usuário às quais esta regra corresponde. Duas funções especiais são reconhecidas -

    • ? - corresponde a um usuário convidado.

    • @ - corresponde a um usuário autenticado.

  • ips - Define endereços IP com os quais esta regra corresponde.

  • verbs - Define a qual método de solicitação (POST, GET, PUT, etc.) esta regra corresponde.

  • matchCallback - Define uma função que pode ser chamada de PHP que deve ser chamada para verificar se esta regra deve ser aplicada.

  • denyCallback - Define uma função que pode ser chamada de PHP que deve ser chamada quando esta regra negar o acesso.

Senhas

Step 1 - Yii fornece os seguintes métodos úteis para trabalhar com senhas.

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 - Insira o URL http://localhost:8080/index.php?r=site/auth, você verá o seguinte.