使用Express-rate-limit存储cookie信息

问题描述

是否可以通过express-rate-limit和rate-limit-mongo软件包将用户cookie(jwt)存储在mongodb数据库中?

我当前正在使用的代码

var limiter = new RateLimit({
  store: new MongoStore({
     uri: process.env.MONGO_URI,expireTimeMs: 60 * 1000 * 60,}),max: 150,windowMs: 10 * 60 * 1000,message: "Too many requests in a short duration,IP Banned for an hour.",});

我想以某种方式知道与请求相关联的jwt cookie(如果存在),以便我知道谁是罪魁祸首。

基本上,如何访问请求对象并将其存储在限速数据库

解决方法

我能够使用express-rate-limit中可用的onLimitReached函数来做到这一点,像这样:

var queslimiter = new RateLimit({
  store: new MongoStore({
    uri: process.env.MONGO_URI,expireTimeMs: 60 * 1000 * 60,collectionName: "ansForce",}),max: 30,message: "Too many requests in a short duration,IP Banned for an hour.",onLimitReached: async function (req,res) {
    try {
      const blacklist = new Blacklist({
        team: req.cookies.team,});
      try {
        const bad = await blacklist.save();
      } catch (e) {
        console.log(e);
      }
    } catch (e) {}
  },});