Безопасный только некоторые маршруты с экспресс-JWT - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть "публичные" маршруты и маршруты "API", которые должны аутентифицироваться express-jwt.

// define public routes in a router
const routerPublic = express.Router();
routerPublic.route("/login", (req, res) => /* whatever */);
routerPublic.route("/about-us", (req, res) => /* whatever */);
routerPublic.route("/foo/bar/baz", (req, res) => /* whatever */);

// define API routes in a router
const routerApi = express.Router();
routerApi.route("/api/v1/foo", (req, res) => /* whatever */);
routerApi.route("/api/v1/bar", (req, res) => /* whatever */);

// add routers to express app
app.use(routerPublic);                                 // (1)
app.use(routerApi, jwt({ secret: "secret" }));         // (2)

Таким образом, я заполняю два экземпляра express.Router - один с незащищенными маршрутами, а другойс охраняемыми маршрутами.Затем я загружаю эти маршрутизаторы в приложение Express, и только защищенные маршруты должны проходить аутентификацию.

Но порядок важен.Если строка (1) предшествует (2), тогда она работает как ожидалось.Но если (2) предшествует (1), то все проходит проверку подлинности, как безопасные, так и небезопасные маршруты.

Итак, есть условие гонки, и я его не понимаю.

1 Ответ

0 голосов
/ 13 февраля 2019

Отправив его как ответ, чтобы помочь другим,

Вы используете новый экспресс-маршрут, можете попробовать что-то вроде этого:

routerApi.use(jwt({ secret: "secret" }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...