Через мидлтварь самый правильный, можно гибко настраивать доступ, но надо учитывать кейсы, когда например запрет на группу, но внутри надо открыть один роут.
Я в Yii2 делал так: глобально проверял, что пользователь прошёл аутентификацию, а уже на уровне контроллера использовал RBAC. Хочу попробовать по аналогии сдеалть