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

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

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

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

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

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

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

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

Само собой, создадим все необходимые для них виды. Сейчас доступ по умолчанию ко всем контроллерам модуля 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

Этим правилом мы разрешили доступ ко всем действиям контроллера Test модуля Admin. Обратите внимание, в массиве controllers мы перечисляем ID контроллеров. При этом, если это контроллеры модуля, тогда мы должны указать и ID модуля.

Идем дальше. А что если мы хотим разрешить доступ не ко всему контроллеру, а только к конкретным его действиям? В этом случае мы можем обратиться к свойству actions, в массиве которого перечислим все необходимые действия. Примерно так мы можем открыть доступ гостям к экшену User контроллера Default:

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

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

Благодаря набору этих правил мы разрешили доступ гостям ко всем действиям контроллера Test, а также к действию User контроллера Default. Доступ ко всем прочим частям модуля Admin будет по-прежнему ограничен.

Замечательные возможности, не так ли? Однако, это далеко не все возможности. В следующей статье мы рассмотрим еще некоторые свойства фильтра, которые, возможно, пригодятся вам в работе.

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

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

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

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree