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

18

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

В одній з попередніх статей ми з вами реалізували модуль адмінки, який доступний за адресою http://yii2/admin. Якщо зараз звернутися до нашої адмінці – ми без проблем в неї потрапимо, незважаючи на те, що ми не авторизовані для цього.

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

Наше завдання – обмежити доступ до цієї частини програми і надавати її лише авторизованим користувачам. Найпростішим варіантом тут буде використання фільтра контролю доступу.

Оскільки в адмінці може бути безліч контролерів і ко всім їм потрібно застосувати одну і ту ж дію, — це наштовхує нас на думку прописати потрібний код раз в якомусь загальному файлі, щоб не дублювати його для кожного контролера. Таким файлом може бути клас app\modules\admin\Module. Пропишемо в ньому мінімальний код, який можна взяти з документації по ACF.

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

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

Що робить цей код? Власне, він визначає правило, згідно з яким доступ до модулю (‘allow’ => true) мають тільки авторизовані користувачі (‘roles’ => [‘@’]). Символ » @ » — це спеціальний символ, що позначає авторизованого користувача. Інший спеціальний символ — ? – ви можете пам’ятати за статтею, в якій ми встановлювали файловий менеджер. Символ ? позначає гостя.

Тепер спробуємо повторно звернутися до адмінки:

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

Оскільки ми не авторизовані, фреймворк забороняє доступ до модуля і виробляє редирект на сторінку авторизації. Спробуємо авторизуватися з даними для тестового доступу (логін – admin, пароль — admin). Після коректного вводу ми авторізуємось і успішно потрапляємо в адмінку.

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

Власне, все – ми реалізували найпростіше обмеження доступу, використовуючи фільтр контролю доступу Access Control Filter.

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