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 APP部署HEROKU问题 MongoNetworkError: failed to connect to server