Учебники

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

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

Если вы перейдете по URL-адресу http: // localhost: 8080 / index.php? R = site / about , вы увидите страницу, но если откроете URL-адрес http: // localhost: 8080 / index.php? R = сайт / контакт , вы будете перенаправлены на страницу входа, потому что только авторизованные пользователи могут получить доступ к действию контакта .

Правила доступа поддерживают множество опций —

  • allow — определяет, является ли это правилом «разрешить» или «запретить».

  • действия — определяет, каким действиям соответствует это правило.

  • контроллеры — определяет, каким контроллерам соответствует это правило.

  • role — определяет роли пользователя, которым соответствует это правило. Две специальные роли признаются —

    • ? — соответствует гостевой пользователь.

    • @ — соответствует аутентифицированному пользователю.

  • ips — определяет IP-адреса, которым соответствует это правило.

  • Глаголы — Определяет, какой метод запроса (POST, GET, PUT и т. д.) соответствует этому правилу.

  • matchCallback — Определяет вызываемую функцию PHP, которая должна вызываться, чтобы проверить, следует ли применять это правило.

  • denyCallback — Определяет вызываемую функцию PHP, которая должна вызываться, когда это правило запрещает доступ.

allow — определяет, является ли это правилом «разрешить» или «запретить».

действия — определяет, каким действиям соответствует это правило.

контроллеры — определяет, каким контроллерам соответствует это правило.

role — определяет роли пользователя, которым соответствует это правило. Две специальные роли признаются —

? — соответствует гостевой пользователь.

@ — соответствует аутентифицированному пользователю.

ips — определяет IP-адреса, которым соответствует это правило.

Глаголы — Определяет, какой метод запроса (POST, GET, PUT и т. д.) соответствует этому правилу.

matchCallback — Определяет вызываемую функцию PHP, которая должна вызываться, чтобы проверить, следует ли применять это правило.

denyCallback — Определяет вызываемую функцию PHP, которая должна вызываться, когда это правило запрещает доступ.

Пароли

Шаг 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);
}

Шаг 2 — Введите URL http: // localhost: 8080 / index.php? R = site / auth , вы увидите следующее.