Как обрабатывать маршруты отдыха expressjs с пустым параметром path, когда csurf возвращает 404 вместо 403? - PullRequest
0 голосов
/ 21 октября 2018

Я уже задавал этот вопрос автору csurf (Дуглас Уилсон) через Github Issues, и он предложил создать новый пост на stackoverflow.

Оригинальный вопрос здесь: https://github.com/expressjs/csurf/issues/161

Моя ситуация такова: у меня есть несколько apis в экспрессе (post, put, get и delete) также с параметрами пути.Некоторые примеры: DELETE / api / users / 2376213786213 POST / api / users.(с телом) и так далее

Я хочу использовать csurf, но я также хочу отлавливать, когда кто-то вызывает API с пустым параметром пути и возвращает 404. Короче говоря, если вы вызываете DELETE / api/ users / (с пустым идентификатором в качестве параметра пути) Я хочу вернуть 404, в противном случае, если вы вызываете DELETE / api / users / 12121, я хочу обработать токен csrf и вернуть 403, если он недействителен.Является ли это возможным?Как?

Я создал промежуточное программное обеспечение для обработки csrf, как в официальном примере csurf:

// error handler
app.use(function (err, req, res, next) {
  if (err.code !== 'EBADCSRFTOKEN') return next(err)

  // handle CSRF token errors here
  res.status(403)
  res.send('form tampered with')
})

И после этого промежуточного программного обеспечения я создал еще одно для обработки 404, ничего особенного.

Однако этот api DELETE / api / users / (с пустым идентификатором в качестве параметра пути) перехватывается первым промежуточным ПО и возвращает 403 вместо 404.

Как я могу это исправить?

Спасибо.

...