我有“公共”路由和“ 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)之前,那么所有内容都会经过身份验证,包括安全和不安全的路由。
所以有一个比赛条件,我听不懂。
答案 0 :(得分:1)
将其发布为答案以帮助他人,
您使用新的特快专递路线时,可以尝试以下操作:
routerApi.use(jwt({ secret: "secret" }))