У меня есть "публичные" маршруты и маршруты "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), то все проходит проверку подлинности, как безопасные, так и небезопасные маршруты.
Итак, есть условие гонки, и я его не понимаю.