我正在寻找一种很好的方法来限制我的nestjs api速率。我看过不同的软件包,但它们都是根据用户ip进行限制的。
你知道有什么好的软件包使用用户访问令牌吗?
如果没有,你能告诉我我的理解是否正确吗?
IF (DB has record where [dbAccessToken === reqAccessToken])
IF (currentDate <= record.timestamp + limitSeconds)
=> throw "Rate Limit Error"
...
=> Resolve Request
=> Add record in DB
我认为我的解决方案可以工作,但我担心它会影响api的速度。
我认为利率限制有两种可能性:
- (首选(:在Web服务器级别实现速率限制(即通过nginx/apache等((nginx速率限制链接https://www.nginx.com/blog/rate-limiting-nginx/)
- 在您的应用程序中实现它-有一个很好的中间件可用于express,也可以在NestJS中使用(https://www.npmjs.com/package/express-rate-limit)
也可以使用NestJS中间件实现您提出的逻辑(此处解释:https://docs.nestjs.com/middleware)-但我不建议你这样做,因为这相当耗费资源!