Маршрут не направлен правильно - PullRequest
0 голосов
/ 16 мая 2018

Я настроил экспресс для использования следующих путей:

const profile = require("./api/profile")
const events = require("./api/events")

app.use("/api/events", events)
app.use("/api/profile", profile)

Внутри событий и профиля index.js файлов У меня есть следующее:

const router = require('./../../modules/router.js')
router.get('/', (req, res) => {

})
module.exports = router

Мой файл router.js:

const express = require("express")
const cookieParser = require('cookie-parser')()
const cors = require('cors')({origin: true})
const router = express.Router()
const firebase = require("./firebase.js")

// https://github.com/firebase/functions-samples/tree/master/authorized-https-endpoint
// Must have header 'Authorization: Bearer <Firebase ID Token>'
const validateFirebaseIdToken = (req, res, next) => {
  if ((!req.headers.authorization || !req.headers.authorization.startsWith('Bearer ')) &&
      !req.cookies.__session) {
    res.status(403).send({ "error": 'Unauthorized'})
    return
  }

  let idToken
  if (req.headers.authorization && req.headers.authorization.startsWith('Bearer ')) {
    // Read the ID Token from the Authorization header.
    idToken = req.headers.authorization.split('Bearer ')[1]
  } else {
    // Read the ID Token from cookie.
    idToken = req.cookies.__session
  }
  firebase.admin.auth().verifyIdToken(idToken).then((decodedIdToken) => {
    req.user = decodedIdToken
    return next()
  }).catch(error => {
    res.status(403).send({"error": 'Unauthorized'})
  })
}
router.use(cors)
router.use(cookieParser)
router.use(validateFirebaseIdToken)

module.exports = router

По какой-то причине маршрутизатор смешивает пути /api/events/ и /api/profile/ всякий раз, когда я их вызываю. Для всех других путей это работает отлично. Как я могу предотвратить это?

1 Ответ

0 голосов
/ 16 мая 2018

Если вы используете один и тот же маршрутизатор как для событий, так и для профиля, это может быть причиной вашей проблемы.

Вы тестировали создание одного маршрутизатора для каждого модуля?

Может быть, попробуйтекак для событий, так и для профиля:

const router = require('express').Router()
router.get('/', (req, res) => {

})
module.exports = router
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...