Контроль за данными и их подгрузка не должны происходить в React-компонентах. Вы должны запрашивать данные с помощью baobab-action, и именно там писать в дерево временные данные и заодно инициировать загрузку с сервера реальных данных. В вашем примере как раз не видно чтобы вы использовали baobab-action, а это прямые аналоги редюсеров в Redux. Вот здесь есть пример работы с actions: https://github.com/Yomguithereal/baobab-react/blob...
Если захотите иметь курсоры которые динамически формируют ответ с временными данными в случае их реального отсутствия, то посмотрите в сторону механизма "Monkey Business" (https://github.com/Yomguithereal/baobab#computed-d... Но запрашивать данные с сервера и менять их в дереве по мере поступления вы всё равно должны только из ation.
Я тоже был сторонником Redux пока не узнал про Baobab и курсоры. После этого Redux в моих глазах как-то резко побледнел.
Baobab - персистентное иммутабельное дерево с поддержкой курсоров. Вот пример его интеграции с React. Эта штука пока конечно не мейнстрим, но чувствую у неё большое будущее.
На стороне сервера вначале идёт проверка авторизован пользователь или нет. Если нет, то смотрится с корневого ли роута он пришёл. Если не с корневого то делается редирект на корневой. Для корневого роута неавторизованному пользователю показывается login-page с тупой формой авторизации.
А вот если пользователь уже авторизован, то такой запрос отправляется на React-router, где с контентом страницы на клиентскую сторону в том числе выплёвывается и бандл с клиентским кодом.
Если кратко, то вся изоморфная котовасия (+ соединения по сокету если у вас realtime) начинает работать только для авторизованных клиентов.