【问题标题】:NodeJS Express allow handeful requests to skip authentication checkNodeJS Express 允许少数请求跳过身份验证检查
【发布时间】:2022-02-14 17:06:54
【问题描述】:

NodeJS 中是否有请求路径正则表达式匹配器,基本上我想构建一个允许某些路径跳过令牌验证的功能。 如何在 Express 中进行操作。

function verifyToken(req, res, next) {
  // Get auth header value
  const whitelistPaths = ["/ping","**/swagger-ui.html/**","/health/*"];
  if(req.path matches any of values in whitelist array) , call next()
  const bearerHeader = req.headers["Authorization"];
  Authentication check
router.get("*", verifyToken, apiProxy);

【问题讨论】:

    标签: node.js regex express


    【解决方案1】:

    只需使用正则表达式作为路径:

    router.get((\/ping)|(.*\/swagger-ui\.html)|(\/health\/.*), verifyToken, apiProxy);

    这将捕获 /ping 或 /swagger-ui.html 或 /health

    这里是文档:https://expressjs.com/en/guide/routing.html

    【讨论】:

    • 我不想要它在那个地方,我需要它在 verifyToken 中间件函数中。我该怎么做呢。
    • 为什么?这些路径应该输入 verifyToken middleware ,其他路径 - 不应该。
    • 我希望所有路径都进入 verifyToken 中间件。
    • 这不是你在问题中写的,所以下次请更具体:`Is there a request path regex matcher` - 这正是我回答的内容。
    • 如果我采用你的方法,我如何匹配所有其他路径。对于三个路径的含义,我不希望调用 verifyToken 中间件,对于其他任何事情,都应该调用 verifyToken 中间件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多