У меня есть настройка Passport.js
с использованием local-stratagey
с моим экспресс-сервером.
Когда я вошел в систему и сделал асинхронный запрос в getInitialProps
NextJS, он правильно разрешает запрос GET черезклиентский рендер, но не серверный рендер. То есть, если я получаю доступ к частному маршруту через клиентскую маршрутизацию, он показывает маршрут и разрешает запрос aync, но когда я перехожу на страницу прямо из браузера, он разрешает маршрут, но не асинхронный запрос через сторону сервера. вызов getInitialProps
.
Чтобы добавить к сложности, я использую Next.js и его новые маршруты API. Сначала я проверяю маршрут в server.js для аутентификации, а затем, если он аутентифицирован, я передаю его на Next.
// server.js routes
app.get('/apples', function(req, res) {
if (req.isAuthenticated()) {
console.log(`[${req.method}]`, 'SERVER - ROUTE AUTHENTICATED');
return handle(req, res);
} else {
console.log(`[${req.method}]`, 'SERVER - ROUTE NOT AUTHENTICATED');
res.redirect("/login");
}
});
app.get('/api/apples', function(req, res) {
if (req.isAuthenticated()) {
console.log(`[${req.method}]`, 'SERVER - API AUTHENTICATED');
return handle(req, res);
} else {
console.log(`[${req.method}]`, 'SERVER - API NOT AUTHENTICATED');
res.status(401).end();
}
});
// /pages/apples.js - the consuming page
Apples.getInitialProps = async () => {
const response = await fetch('http://localhost:3000/api/apples');
const apples = await response.json();
return { apples }
}
Любая помощь будет принята с благодарностью!