问题描述
是否可以通过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) {}
},});