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

Posted

技术标签:

【中文标题】MEAN Stack - 仅在某些 REST 方法上使用 jwt 和 express-restify-mongoose【英文标题】:MEAN Stack - Using jwt with express-restify-mongoose on only some REST methods 【发布时间】: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。

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

【问题讨论】:

【参考方案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/

【讨论】:

以上是关于MEAN Stack - 仅在某些 REST 方法上使用 jwt 和 express-restify-mongoose的主要内容,如果未能解决你的问题,请参考以下文章

不使用 API REST MEAN + Mongoose 中的方法“UPDATE”

Mean stack web app的基于角色的访问控制

MEAN STACK APP部署HEROKU问题 MongoNetworkError: failed to connect to server

用户未在 MEAN Stack 中获得授权?

nginx 中 MEAN-stack 应用程序的漂亮 url

如何在 MEAN STACK Web 应用程序中启用 CORS?