Yii2 Access Control. Авторизация в Yii2. Часть 3

Yii2 Access Control. Авторизация в Yii2

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

Из прошлой статьи мы узнали, как можно достаточно гибко ограничивать доступ к конкретным контроллерам или даже конкретным действиям этих контроллеров. В этой статье мы пойдем чуть дальше и попробуем добавить некоторые условия, согласно которым мы будем разрешать или запрещать доступ.

Для начала познакомимся со свойством matchCallback. Данное свойство принимаем параметром колбек функцию и, в зависимости от того, что вернет функция, доступ будет разрешен или запрещен. Если функция вернет true – доступ разрешен, false – запрещен. Проверим. Давайте откроем доступ для авторизованных пользователей к контроллеру Default (и ко всем прочим контроллерам, если таковые у вас есть). Ну а к контроллеру Test откроем доступ для всех:

Yii2 Access Control. Авторизация в Yii2

Теперь неавторизованные пользователи имеют доступ ко всем действиям контроллера Test. Допишем callback-функцию, которая для начала просто вернет false:

После этого доступ к контроллеру будет закрыт даже для авторизованных пользователей.

Yii2 Access Control. Авторизация в Yii2

Соответственно, если функция вернет true – доступ будет предоставлен. Этим и можно воспользоваться, организуя всевозможные проверки. Возьмем пример из документации и откроем доступ, если сегодня определенная дата:

Если сегодня 23 июня, тогда текущий вызов функции date() вернет true и параметр matchCallback также получит true – доступ будет открыт. Мы можем организовать и более полезные проверки. Например, можем реализовать простейшую систему ролей: гость, пользователь, администратор. В данном параметре нам будет достаточно проверить роль авторизованного пользователя и, если это не admin – вернуть false.

Еще одной полезной возможностью будет ограничение доступа по IP, для этого мы можем обратиться к параметру ips. Давайте откроем доступ ко всей админке только для локального IP:

После этого доступ будет открыт только для указанного адреса IP, все прочие увидят уже знакомую картину:

Yii2 Access Control. Авторизация в Yii2

Таким образом, возможностей Access Control Filter вполне будет достаточно для организации простой системы ролей на сайте. А на сегодня все. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Метки:

Похожие статьи:

Комментарии Вконтакте: