Yii2. AccessControl не работает при указанном beforeAction.

Главная  >>  Backend  >>  Yii2. AccessControl не работает при указанном beforeAction.

Сегодня столкнулся с ситуацией, когда в случае переопределенного beforeAction не срабатывали правила доступа accessControl. Проблему быстро решил, но думаю я не один, кто с ней сталкивался — поэтому напишу решение.

Итак, мой метод имел следующий вид:

Пока пользователь был авторизован — всё было хорошо, но когда сессия истекла — получили ошибку об ошибке доступа к несуществующему методу — т.к. \Yii::$app->user->identity === null.

Пояснение к возникшей ситуации есть в документации.

Выход, как следствие, должен выглядеть так:

Т.е. важно сначала запустить всю цепочку обработчиков beforeAction, где как раз и отработает проверка на права доступа accessControl. В случае, если проверка неуспешна — мы возвращаем false. Если же всё хорошо — тогда можем смело выполнять нашу логику.

Если Вам интересен вопрос редиректа в методе beforeActionздесь Вы можете посмотреть короткую статью по этому вопросу.

На этой всё — если остались вопросы — добро пожаловать в комментарии. Удачи, друзья.