【问题标题】:JWT How to bypass certain API routes and http methodsJWT 如何绕过某些 API 路由和 http 方法
【发布时间】:2016-05-10 02:10:42
【问题描述】:

我可以让 JSON-Web-Token 忽略使用 .unless 的路径。

app.use(expressJWT({secret: config.JWTSECRET}).unless({path: 
['/register', 
'/authentication',
]}));

我有一个使用不同 HTTP 方法(get、put、post、delete)的路由。我希望 /events 的 GET 版本不需要令牌,但 /event 的 POST 版本需要令牌。我可以在没有 GET 和 POST 等不同路由的情况下执行此操作吗?

/events //GET - no token required
/events //POST - token required

【问题讨论】:

    标签: javascript node.js jwt json-web-token


    【解决方案1】:
     jwt({ secret, algorithms: ['HS256'] }).unless({
            path: [
                { url: /api/products, methods: ['GET', 'OPTIONS'] },
                { url: /api/categories/, methods: ['POST', 'OPTIONS'] },
               
            ]
        })
    

    【讨论】:

    • 您的答案可以通过添加有关代码的作用以及它如何帮助 OP 的更多信息来改进。
    【解决方案2】:

    如果我没记错的话,express-jwt 模块正在使用express-unless 为您提供.unless 方法。这样,您可以使用自定义函数来过滤请求。

    var filter = function(req) {return true;}
    app.use(expressJWT({ secret: config.JWTSECRET}).unless(filter));
    

    filter函数中,可以查看路由(req.path)和请求类型(req.method)。

    【讨论】:

      猜你喜欢
      • 2012-03-05
      • 2022-12-17
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      相关资源
      最近更新 更多