Ответ 1
Разделить путь рендеринга представления из путей API. В конце концов вы можете настроить логику аутентификации на вызовы api.
//Auth check middleware
function isAuth(req, res, next) {...}
//API routes
app.post("api/users/login", function() {...});
app.post("api/users/logout", function() {...});
app.get("api/purchases", isAuth, function() {...});
//and so on...
//Wild card view render route
app.use(function(req, res) {
var router = Router.create({
onAbort: function(options) {...},
onError: function(error) {...},
routes: //your react routes
location: req.url
});
router.run(function(Handler) {
res.set("Content-Type", "text/html");
res.send(React.renderToString(<Handler/>));
});
});
Итак, вам нужно решить, как вы собираетесь передавать данные на стороне сервера в представлениях на стороне клиента (выберите метод изоморфной передачи данных).
Вы также можете создавать представления и логику перенаправления только на стороне клиента и сначала визуализировать реагирующие компоненты в состоянии ожидания, которое будет разрешено на клиенте после того, как компонент будет установлен (проверьте состояние аутентификации через вызов API).