MEAN Stack - 仅在某些REST方法上使用jwt和express-restify-mongoose

时间:2014-10-27 18:31:53

标签: node.js rest express jwt restify

我对这些东西都很陌生,所以请耐心等待。

我尝试使用MEAN堆栈创建REST API - 为了方便起见,我尝试使用它:

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

当我跑步时,它对我来说非常适合:

restify.serve(app,hotels);

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

它也在使用我的令牌逻辑',我可以使用以下内容保护所有令人满意的网址

app.use(expressJwt({secret:' secretkey'})。除非({路径:[' / auth',' /&#39 ]}));

我的问题是 - 我如何使用我的令牌逻辑(POST,PUT,DELETE)保护某些REST方法,例如' / api / hotels' - >我想像GET这样的方法是公开的,但不是POST,PUT和DELETE。

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

2 个答案:

答案 0 :(得分:2)

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

然后执行:

.first-user-overlay-shell {
    width: 90%;
    min-width: 1200px;
    max-width: 1380px;
    z-index: 1000;
    overflow: scroll;
    position: absolute;
    top: 0;
    margin-left: auto;
    margin-right: auto;
    left: 0;
    right: 0;
}

.overlay-bg {
    z-index: 105;
    position: fixed;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    background-color: rgba(0,0,0, 0.8);
}

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

答案 1 :(得分: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});