【问题标题】:Handling parameterised routes in express-jwt using unless使用除非处理 express-jwt 中的参数化路由
【发布时间】:2015-08-14 01:35:14
【问题描述】:

给定以下路线:

router.get('/api/members/confirm/:id, function (req, res, next)

如何指定要排除的路由?我试过了:

app.use('/api', expressJwt({ secret: config.secret}).unless({path: ['/api/members/confirm']}));

app.use('/api', expressJwt({ secret: config.secret}).unless({path: ['/api/members/confirm/:id']}));

但除非数组中的路径似乎都不起作用?

【问题讨论】:

    标签: express express-jwt


    【解决方案1】:

    express-jwt 模块正在使用 express-unless 为您提供此 unless 方法,该方法不接受 express 的 :param 路径参数语法。

    但它确实接受正则表达式,所以你可以这样做:

    app.use('/api', expressJwt({ secret: config.secret}).unless({path: [/^\/api\/members\/confirm\/.*/]}));
    

    如果你不喜欢,你也可以给除非一个函数:

    var myFilter = function(req) {return true;}
    app.use('/api', expressJwt({ secret: config.secret}).unless(myFilter));
    

    【讨论】:

      【解决方案2】:

      您必须使用正则表达式来实现您正在寻找的东西,您还可以添加另一个字段来指定允许的方法,如下所示:

      expressJwt({ secret, isRevoked }).unless({
          path: [
              { url: /^\/api\/members\/confirm\/.*/, methods: ['GET', 'PUT'] }
          ]
      })
      

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 2020-08-21
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 2015-05-13
        • 2014-10-18
        • 2020-10-09
        • 1970-01-01
        相关资源
        最近更新 更多