【问题标题】:MEAN Stack - Using jwt with express-restify-mongoose on only some REST methodsMEAN Stack - 仅在某些 REST 方法上使用 jwt 和 express-restify-mongoose
【发布时间】:2014-12-23 00:50:27
【问题描述】:

我对所有这些东西真的很陌生,所以请多多包涵。

我尝试使用 MEAN 堆栈创建一个 REST API - 为了让事情变得简单,我尝试使用它:

https://github.com/florianholzapfel/express-restify-mongoose

当我跑步时,它对我来说非常有效:

restify.serve(app, hotels);

--> 应用程序当然是 express,hotels 是我的 mongoose.model,它指向我的酒店架构。

它也适用于我的“令牌逻辑”,我可以通过以下方式保护所有经过重新处理的 URL:

app.use(expressJwt({ secret: 'secretkey'}).unless({path: ['/auth', '/']}));

我的问题是 - 如何使用我的令牌逻辑(POST、PUT、DELETE)保护一些 REST 方法,例如“/api/hotels” --> 我不想公开 GET 之类的方法,但不能公开 POST、PUT 和 DELETE。

有可能吗? 非常感谢您的帮助!

【问题讨论】:

    标签: node.js rest express jwt restify


    【解决方案1】:

    答案是:

    像这样创建一个中间件:

    function AllCanGetIt(req, res, next) {
      if(req.method === 'GET') {
       return next();
     }
    
     return expressJwt({ secret: 'secretstring' })(req, res, next);
    };
    

    然后做:

     restify.serve(app, hotels, {middleware: AllCanGetIt});
    

    【讨论】:

      【解决方案2】:

      使用 "express-restify-mongoose": "^2.0.0" 你应该使用 "preMiddleware"

      然后做:

      restify.serve(app, hotels, {preMiddleware: AllCanGetIt});
      

      更多信息: https://florianholzapfel.github.io/express-restify-mongoose/

      【讨论】:

        猜你喜欢
        • 2014-06-05
        • 2019-07-06
        • 2016-12-19
        • 2017-08-30
        • 2015-08-25
        • 2021-01-07
        • 1970-01-01
        • 1970-01-01
        • 2016-12-11
        相关资源
        最近更新 更多