Yii - Авторизация

Процесс проверки того, что у пользователя достаточно прав для выполнения каких-либо действий, называется authorization. Yii предоставляет ACF (фильтр контроля доступа), метод авторизации, реализованный какyii\filters\AccessControl. Измените функцию behavior () 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 и contact. Все остальные действия контролю доступа не подлежат. Свойство rules перечисляет правила доступа. Всем гостям (с ролью «?») Будет разрешен доступ к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 - Определяет IP-адреса, которым соответствует это правило.

  • 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, вы увидите следующее.