Вообще, если не ошибаюсь, то это разруливается фильтрами контроллеров. В site/index ставите
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'actions' => ['index', какие-то еще методы],
'roles' => [ '@']
],
[
'allow' => true,
'actions' => ['index'],
'roles' => ['@']
],
[
'allow' => false
]
]
]
];
}
Ну и в каждом контроллере, который должен быть для зарегистрированных иначе по прямой ссылке все равно будет все доступно. Или я не так понял задачу?