Yii2 Access Control. Авторизація в Yii2. Частина 2

1

Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком Yii2. У цій статті ми з вами продовжимо працювати з фільтром контролю доступу – Yii2 Access Control Filter (ACF). Зокрема, ми розглянемо деякі інші його властивості.

У попередній статті ми з вами познайомилися з фільтром контролю доступу – поведінкою, завдяки якому ми можемо обмежувати доступ до контролерів і дій. Зокрема, ми з його допомогою легко обмежили доступ до модуля адмінської частині і тепер туди може потрапити тільки авторизований користувач. Однак ACF має і ряд додаткових властивостей, яких ми поки що не стосувалися. Давайте пройдемося по ним.

Для подальшої роботи давайте додамо в дефолтний контролер адмінки додатковий екшен, наприклад User:

public function actionUser()
{
return $this->render(‘user’);
}

Також створимо ще один контролер – Test:

Yii2 Access Control. Авторизація в Yii2. Частина 2

Само собою, створимо всі необхідні для них види. Зараз доступ за замовчуванням до усіх контролерів модуля admin закритий і при зверненні до будь-якого з них відбувається редірект на сторінку авторизації.

Але що якщо ми захочемо відкрити доступ до деяких з контролерів модуля? Наприклад, я хочу, щоб доступ до контролера Test був відкритий, а доступ до іншим контролерам продовжував залишатися закритим. Зробити це допоможе властивість controllers. Давайте додамо ще одне правило поведінки ACF:

public function behaviors(){
return [
‘access’ => [
‘class’ => \yii\filters\AccessControl::className(),
‘rules’ => [
[
‘allow’ => true,
‘roles’ => [‘@’],
],
[
‘allow’ => true,
‘controllers’ => [‘admin/test’],
],
],
],
];
}

Yii2 Access Control. Авторизація в Yii2. Частина 2

Цим правилом ми дозволили доступ до всіх дій контролера Test модуля Admin. Зверніть увагу, у масиві controllers ми перераховуємо ID контролерів. При цьому, якщо це контролери модуля, тоді ми повинні вказати і ID модуля.

Йдемо далі. А що якщо ми хочемо дозволити доступ не до всього контролеру, а тільки до конкретних його діям? В цьому випадку ми можемо звернутися до властивості actions, у масиві якого перерахуємо всі необхідні дії. Приблизно так ми можемо відкрити доступ гостей до екшену User контролера Default:

[
‘allow’ => true,
‘controllers’ => [‘admin/default’],
‘actions’ => [‘user’],
],

Yii2 Access Control. Авторизація в Yii2. Частина 2

Завдяки набору цих правил ми дозволили доступ гостей до всіх дій контролера Test, а також до дії User контролера Default. Доступ до всіх інших частин модуля Admin буде як і раніше обмежений.

Чудові можливості, чи не так? Однак, це далеко не всі можливості. У наступній статті ми розглянемо ще деякі властивості фільтра, які, можливо, стануть в нагоді вам в роботі.

А на сьогодні все. Більше про фреймворку ви можете дізнатися з наших безкоштовних або платних уроків. Також створення найпростішого блогу на Yii2 можна подивитися в цьому циклі уроків.