Как отправить ответное приложение клиенту с помощью Express, если у вас есть маршруты, которые прошли проверку подлинности, а некоторые - нет? - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть приложение узла, которое обслуживает мое приложение реакции следующим образом:

// STATIC ASSETS WHEN PUSHED TO HEROKU
if (process.env.NODE_ENV === "production") {
  app.use(express.static("client/build"));
}
app.get("*", function(req, res) {
  res.sendFile(path.join(__dirname, "./client/public/index.html"));
});

обычно это должен быть последний выбранный вами маршрут, поскольку он переопределяет все остальные маршруты get.Тем не менее, у меня есть некоторое промежуточное ПО, которое проверяет аутентификацию:

const jwt = require("express-jwt")
const auth = jwt({
  secret: process.env.JWT_SECRET,
  userProperty: 'payload'
});
app.use("/auth", authRoutes);
app.use(auth);
app.use("/api", routes);

Маршруты /auth используются для входа и регистрации и, следовательно, не защищены промежуточным ПО, однако маршруты /api.

Но когда я пытаюсь использовать приложение, оно неправильно отправляет данные из запросов API, таких как GET /api/users, вместо этого возвращает HTML, как указано в * маршруте.

Есть лиспособ для меня, чтобы мои аутентифицированные маршруты и все еще правильно обслуживать мое приложение реагировать?

1 Ответ

0 голосов
/ 26 сентября 2018

Вы можете поместить свои HTML-маршруты внизу и сделать только маршруты API, используя промежуточное программное обеспечение auth.Это не будет выполнять промежуточное программное обеспечение для ваших статических страниц и авторизует только /api маршруты.

const jwt = require("express-jwt")
const auth = jwt({
  secret: process.env.JWT_SECRET,
  userProperty: 'payload'
});
app.use("/auth", authRoutes);
app.get("/api", auth, routes);



 // STATIC ASSETS WHEN PUSHED TO HEROKU
if (process.env.NODE_ENV === "production") {
  app.use(express.static("client/build"));
}
app.get("*", function(req, res) {
  res.sendFile(path.join(__dirname, "./client/public/index.html"));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...