Есть такие сайты на которых необходимо чтобы каждый посетитель сначала авторизовался, прежде чем увидеть содержимое сайта. К таким проектам в основном относятся системы администрирования, хотя и не только. Поиски в интернете не дали никаких вменяемых ответов как реализовать такой механизм на Yii, так что пришлось разбираться самому.

Как оказалось сделать подобную конструкцию довольно просто. Для этого в контроллере необходимо переопределить метод beforeAction, например так:

class Controller extends CController
{
    // ...

    protected function beforeAction($action)
    {
        if (Yii::app()->user->isGuest AND $this->id . '/' . $action->id !== 'account/login') {
            Yii::app()->user->loginRequired();
        }

        return true;
    }

    // ...
}

После этого все контроллеры, к которым надо закрыть доступ, наследовать от этого контроллера вместо CController. Если проект создавался через yiic webapp, то такой контроллер можно найти в /protected/components/Controller.php. Таким образом все не авторизованные пользователи обращаясь к любому контроллеру будут принудительно перенаправлены на страницу авторизации, установленную в конфиге (loginUrl).